为什么ImageView 和TextView无法关闭

为什么ImageView 和TextView无法关闭

package com.imooc.ui_project;

import java.security.PublicKey;
import java.util.Calendar;
import android.app.Activity;
import android.os.Bundle;
import android.text.Layout;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.ToggleButton;

public class MainActivity extends Activity {
	private int year,month,date,hour,minute,second,millisecond;
	private ToggleButton toggleButton;
	private RadioGroup radioGroup;
	private RadioButton rb01, rb02, rb03;
	private ImageView imageView;
	private TextView textView;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_ui);
		initView();
		textView.setText(setTime());
		
		toggleButton.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {
				if (toggleButton.isChecked()) {
					radioGroup.setVisibility(View.VISIBLE);
				} else {
					radioGroup.setVisibility(View.GONE);
					imageView.setVisibility(View.GONE);
	                                textView.setVisibility(View.GONE);
					radioGroup.clearCheck();
				}
			}
		});
	}

	private void initView() {
		toggleButton = (ToggleButton) findViewById(R.id.tb);
		radioGroup = (RadioGroup) findViewById(R.id.rg);
		rb01 = (RadioButton) findViewById(R.id.rb01);
		rb02 = (RadioButton) findViewById(R.id.rb02);
		rb02 = (RadioButton) findViewById(R.id.rb03);
		imageView = (ImageView) findViewById(R.id.iv);
		textView = (TextView) findViewById(R.id.tv);
		radioGroup.setOnCheckedChangeListener(new MyRadioButtonListener());
	}
	
	private String setTime(){
		Calendar calendar= Calendar.getInstance();
		year=calendar.get(calendar.YEAR);
		month=calendar.get(calendar.MONTH);
		date=calendar.get(calendar.DATE);
		hour=calendar.get(calendar.HOUR);
		minute=calendar.get(calendar.MINUTE);
		second=calendar.get(calendar.SECOND);
		millisecond=calendar.get(calendar.MILLISECOND);
		return "当前时间:"+year+"-"+month+"-"+date+"-"+hour+
				"-"+minute+"-"+second+"-"+millisecond;
		
	}

	class MyRadioButtonListener implements OnCheckedChangeListener {

		@Override
		public void onCheckedChanged(RadioGroup group, int checkedId) {
			switch (checkedId) {
			case R.id.rb01:
				imageView.setImageResource(R.drawable.office);
				break;
			case R.id.rb02:
				imageView.setImageResource(R.drawable.meeting);
				break;
			case R.id.rb03:
				imageView.setImageResource(R.drawable.visitor);
			}
			imageView.setVisibility(View.VISIBLE);
			textView.setVisibility(View.VISIBLE);
		}
	}
}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
Polaris717 2018-10-12 13:52:19
toggleButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                if (toggleButton.isChecked()) {
                    radioGroup.setVisibility(View.VISIBLE);
                } else {
                    radioGroup.setVisibility(View.GONE);
                    imageView.setVisibility(View.GONE);
                                    textView.setVisibility(View.GONE);
                    radioGroup.clearCheck();
                }
            }
        });

这一段中, radioGroup.clearCheck(); 放在radioGroup之后,放在Imageview之前,可能因为radioButton还是选中的,imageView.setVisibility(View.GONE); textView.setVisibility(View.GONE);执行之后又被打开了,然后radioGroup.clearCheck();才执行

  • 应该先clearCheck()然后再去设置控件的不可见
    2018-10-12 14:30:34
  • 为什么先要clearCheck()然后再设置控件的不可见
    2019-01-27 14:33:45
  • 执行clearCheck()系统会回调onCheckedChanged()使得设置的可见性无效
    2019-01-28 10:22:50
提问者 CV工程师鱼 2018-03-05 01:51:28
  • 给ImageView、RadioGroup和TextView在xml布局中分别添加一个android:visibility="gone"
    2018-03-05 10:50:04
  • 提问者 CV工程师鱼 回复 irista23 #2
    我有加。就是一开始的时候都是隐藏的,点开了wifi,没问题,但是关闭后只有RadioGroup隐藏了,ImageView、TextView没隐藏
    2018-03-05 11:14:15
  • irista23 回复 提问者 CV工程师鱼 #3
    你可以把作业提交上了,这样结合布局中的代码比较容易帮你找到问题,每个作业有两次提交机会。
    2018-03-05 14:30:19
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师