我想要一个出勤加上任务系统。为此,我使用了复选框和线性布局。线性布局用于动态添加编辑文本框。选中复选框后,将显示一个新文本字段,当取消选中该文本字段时,必须隐藏文本字段。我使用了类似的部分代码:
public void onCheckBoxClicked(View v) {
boolean checked = ((CheckBox) v).isChecked();
EditText tv;
tv = new EditText(this);
tv.setLayoutParams(new RadioGroup.LayoutParams(RadioGroup.LayoutParams.WRAP_CONTENT,
RadioGroup.LayoutParams.WRAP_CONTENT));
tv.setText(one.getText().toString()+ "'s task today?");
tv.setBackgroundColor(0xff66ff66); // hex color 0xAARRGGBB
tv.setPadding(20, 20, 20, 20);// in pixels (left, top, right, bottom)
switch (v.getId()) {
case R.id.checkBox1:
if(checked) {
list.addView(tv);
Toast.makeText(getApplicationContext(), one.getText().toString() + " is present", Toast.LENGTH_SHORT).show();
}
if(!checked) {
tv.setVisibility(EditText.GONE); //problem exists here--is not executing
Toast.makeText(getApplicationContext(), one.getText().toString() + " is absent", Toast.LENGTH_SHORT).show();
}
break;
现在,当我选中复选框时,我可以轻松获得编辑文本字段,但在取消选中时,编辑文本字段不会隐藏。我该如何解决?
答案 0 :(得分:0)
这是因为每次单击某个复选框时,您都在创建新的EditText。您正试图隐藏甚至尚未显示/添加的EditText。知道了!
尝试将EditText tv = new EditText(this);
editText作为类变量,在onCreate中创建它。然后你可以在需要时隐藏/显示它。
它看起来像下面的代码。
EditText tv;
onCreate(.......){
..............
tv = new EditText(this);
..............
}
然后在tv
方法中使用此onCheckBoxClicked
,而不是在此方法中创建一个。{/ p>