我有一个问题。我希望我的edittext最初被禁用。只有在选中复选框时才会启用它。发生了什么,当我启动应用程序时,复选框没有检查,但我可以编辑edittext。要禁用edittext,我必须检查然后再次取消选中文本框。你能救我吗?
这是我的代码:
check1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
txtbox1.setEnabled(true);
} else {
txtbox1.setEnabled(false);
}
}
});
对2个不同的edittext使用2个复选框时。按第二个复选框时,我的应用程序崩溃了。下面是代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.order);
txtbox1= (EditText) findViewById(R.id.editText1);
button1 = (Button) findViewById(R.id.button1);
tv = (TextView) findViewById(R.id.editText5);
txtbox2= (EditText) findViewById(R.id.editText2);
check1 = (CheckBox)findViewById(R.id.checkcheck);
check2 = (CheckBox)findViewById(R.id.checkcheckcheck);
button1.setOnClickListener(new clicker());
check1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
txtbox1.setEnabled(true);
txtbox1.setFocusable(true);
} else {
txtbox1.setEnabled(false);
txtbox1.setFocusable(false);
}
}
});
check2.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
txtbox2.setEnabled(true);
txtbox2.setFocusable(true);
} else {
txtbox2.setEnabled(false);
txtbox2.setFocusable(false);
}
}
});
}
logcat的:
答案 0 :(得分:1)
你是否调用txtbox1.setEnabled(false);
中的onCreate()
?
onCheckChanged将不会在最开始时调用。
答案 1 :(得分:1)
也许这会对你有所帮助:
txtbox1.setKeyListener(null);
答案 2 :(得分:1)
在你的xml文件中使用
android:enabled = "false"
for edittext最初禁用它。
或以编程方式书写
txtbox1.setEnabled(false);
中的onCreate()
。
然后使用:
check1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
txtbox1.setEnabled(true);
} else {
txtbox1.setEnabled(false);
}
}