0

我有一个问题。我希望我的 edittext 最初被禁用。只有当我选中复选框时才会启用它。发生的事情是,当我启动应用程序时,复选框没有选中,但我可以编辑编辑文本。要禁用edittext,我必须检查然后再次取消选中文本框。你能帮助我吗?

这是我的代码:

check1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
    boolean isChecked) {
    if (isChecked) {
        txtbox1.setEnabled(true);
    } else {
        txtbox1.setEnabled(false);
    }
}
});

当为 2 个不同的编辑文本使用 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);
    }
}

});

}

日志猫: 日志猫

4

3 回答 3

1

txtbox1.setEnabled(false);在里面调用onCreate()吗?
onCheckChanged 一开始不会被调用。

于 2013-08-28T08:24:44.183 回答
1

也许这会帮助你:

txtbox1.setKeyListener(null);
于 2013-08-28T08:28:18.240 回答
1

在您的 xml 文件中,使用 android:enabled = "false"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);
    }
}
于 2013-08-28T08:50:28.590 回答