Java 使用复选框错误禁用edittext
我这里有个问题。我想使用复选框禁用edittext。如果选中复选框,则edittext可用;如果未选中,则禁用。但我有问题。这是我的密码:有人能查一下吗。接受eclipse,没有错误。但当我在手机上运行时,启用/禁用功能不起作用Java 使用复选框错误禁用edittext,java,android,eclipse,Java,Android,Eclipse,我这里有个问题。我想使用复选框禁用edittext。如果选中复选框,则edittext可用;如果未选中,则禁用。但我有问题。这是我的密码:有人能查一下吗。接受eclipse,没有错误。但当我在手机上运行时,启用/禁用功能不起作用 public class Order extends Activity { private Button button1; private EditText txtbox1,txtbox2; private TextView tv; CheckBox che
public class Order extends Activity {
private Button button1;
private EditText txtbox1,txtbox2;
private TextView tv;
CheckBox check1;
/** Called when the activity is first created. */
@Override
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);
button1.setOnClickListener(new clicker());
}
public void addListenerOncheck1() {
check1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
if(isChecked){
txtbox1.setFocusable(true);
txtbox1.setFocusableInTouchMode(true);
} else {
txtbox1.setFocusable(false);
txtbox1.setFocusableInTouchMode(false);
}
}
});
}
class clicker implements Button.OnClickListener
{
public void onClick(View v)
{
String a,b;
Integer vis;
a = txtbox1.getText().toString();
b = txtbox2.getText().toString();
vis = Integer.parseInt(a)*2+Integer.parseInt(b)*3;
tv.setText(vis.toString());
}
}
}
通过调用您的方法addListenerOncheck1(),您将无法添加侦听器; 因此,将addListenerOncheck1()放入;添加OnCreate方法的末尾 但我强烈建议您不要使用所有这些额外的自制类来添加侦听器。改为使用以下代码并将其添加到OnCreate方法中:
@Override
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);
button1.setOnClickListener(new clicker());
check1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
txtbox1.setEnabled(false);
} else {
txtbox1.setEnabled(true);
}
}
});
button1.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
String a,b;
Integer vis;
a = txtbox1.getText().toString();
b = txtbox2.getText().toString();
vis = Integer.parseInt(a)*2+Integer.parseInt(b)*3;
tv.setText(vis.toString());
}
});
// This will make sure the user can only type numbers into the EditTexts:
txtbox1.setInputType(InputType.TYPE_CLASS_NUMBER);
txtbox2.setInputType(InputType.TYPE_CLASS_NUMBER);
// Code to disable editTexts at start once:
txtbox1.setEnabled(false);
txtbox2.setEnabled(false);
}
我还有一个问题。我希望最初禁用edittext。仅当我选中复选框时,它才会启用。现在发生的是,当我启动应用程序时,复选框没有复选框,但我可以编辑编辑文本。要禁用编辑文本,我必须选中文本框,然后再次取消选中。你能帮我吗?那么你还需要设置Enabled(false);两个编辑文本的一次创建;答案中添加了代码