【问题标题】:Disabling the edittext by default by unchecking the checkbox error通过取消选中复选框错误默认禁用编辑文本
【发布时间】:2013-08-31 05:21:09
【问题描述】:

我有一个问题。我希望我的 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);
    }
}

});

}

Logcat:

【问题讨论】:

  • 禁用 xml 中的 edittext 并仅在用户选中复选框时启用它。
  • 你的xml中有android:enabled="false"吗?
  • 是的。我忘记了那个。谢谢!
  • 查看我更新的帖子。遇到了新问题。 @Raghunandan
  • 我解决了。我输入了错误的 ID。呵呵:))

标签: java android eclipse checkbox


【解决方案1】:

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

【讨论】:

  • semms 54 in in Order.java?
  • 我解决了。我输入了错误的 ID。下次我会检查。再检查一遍!谢谢!
【解决方案2】:

也许这会对你有所帮助:

txtbox1.setKeyListener(null);

【讨论】:

    【解决方案3】:

    在您的 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);
        }
    }
    

    【讨论】:

    • 谢谢。当我尝试禁用不同的编辑文本的两个复选框时。第一个复选框正在工作,但是当我单击第二个复选框时,我的应用程序崩溃了。我会更新我的帖子并发布我的代码。
    • 你得到空指针异常,你能发布xml文件吗?
    • 如果编辑文本框大概有10个左右,我们是否应该将上述方法执行10次?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多