通过取消选中复选框错误,默认情况下禁用edittext

时间:2013-08-28 08:21:04

标签: java android eclipse checkbox

我有一个问题。我希望我的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的: Logcat

3 个答案:

答案 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);
    }
}