在Java Android develop中,单击以启用按钮时,如何处理两个复选框?
我打算用android设计我的应用程序。当我有两个复选框时,我在注册中遇到了一个问题。单击两个复选框时,按钮将启用,并可单击以转到下一个活动。这是我的剧本在Java Android develop中,单击以启用按钮时,如何处理两个复选框?,java,android,Java,Android,我打算用android设计我的应用程序。当我有两个复选框时,我在注册中遇到了一个问题。单击两个复选框时,按钮将启用,并可单击以转到下一个活动。这是我的剧本 private static final String TAG_Clicked = "TagClicked"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
private static final String TAG_Clicked = "TagClicked";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_term_signup);
CheckBox checkBoxTOS = (CheckBox) findViewById(R.id.checkBox_termsOfService);
CheckBox checkBoxPNP = (CheckBox) findViewById(R.id.checkBox_privacy_policy);
Button buttonNext = (Button) findViewById(R.id.btn_next);
checkBoxTOS.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked){
checkBoxTOS.isChecked();
Log.d(TAG_Clicked,"Agreed TOS "+isChecked);
}
}
});
checkBoxPNP.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked){
checkBoxPNP.isChecked();
Log.d(TAG_Clicked,"Agreed PNP "+isChecked);
}
}
});
if ((checkBoxTOS.isChecked() == true) && (checkBoxPNP.isChecked() == true)){
buttonNext.setEnabled(true);
Log.d(TAG_Clicked,"A");
} else {
buttonNext.setEnabled(false);
Log.d(TAG_Clicked,"B");
}
}
您可以拥有复选框计数器,并通过比较计数来管理按钮状态。例如:
private static final String TAG_Clicked = "TagClicked";
private int counter = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_term_signup);
CheckBox checkBoxTOS = (CheckBox) findViewById(R.id.checkBox_termsOfService);
CheckBox checkBoxPNP = (CheckBox) findViewById(R.id.checkBox_privacy_policy);
Button buttonNext = (Button) findViewById(R.id.btn_next);
checkBoxTOS.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
counter++;
checkBoxTOS.isChecked();
Log.d(TAG_Clicked, "Agreed TOS " + isChecked);
} else {
counter--
}
manageButtonState(counter);
}
});
checkBoxPNP.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
counter++;
checkBoxPNP.isChecked();
Log.d(TAG_Clicked, "Agreed PNP " + isChecked);
} else {
counter--;
}
manageButtonState(counter);
}
});
}
private void manageButtonState(int counter) {
buttonNext.setEnabled(counter > 1)
}
在检查两个
复选框的状态更改后,您必须检查按钮是否应启用
每次更改复选框和复选框的状态后,应执行以下代码
if ((checkBoxTOS.isChecked() == true) && (checkBoxPNP.isChecked() == true)){
buttonNext.setEnabled(true);
Log.d(TAG_Clicked,"A");
} else {
buttonNext.setEnabled(false);
Log.d(TAG_Clicked,"B");
}
在方法中移动此代码,并在选中“状态更改”复选框后调用该方法
void changeButtonState(){
if (checkBoxTOS.isChecked() && checkBoxPNP.isChecked() ){
buttonNext.setEnabled(true);
Log.d(TAG_Clicked,"A");
} else {
buttonNext.setEnabled(false);
Log.d(TAG_Clicked,"B");
}
}
调用此方法表单检查更改侦听器回调
checkBoxTOS.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
changeButtonState();
}
});
checkBoxPNP.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
changeButtonState();
}
});
checkBoxTOS.isChecked()代码>该语句不起任何作用。您必须使用类似于:if(checkBoxTOS.isChecked()){buttonNext.setEnabled(true);else buttonNext.setEnabled(false);}
或:buttonNext.setEnabled(isChecked&&checkBoxTOS.isChecked())。它可以工作。谢谢你的帮助!不客气:)
checkBoxTOS.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
changeButtonState();
}
});
checkBoxPNP.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
changeButtonState();
}
});
checkBoxTOS.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
//will called when you select or deselect
enableOrDisableButton();
}
});
checkBoxPNP.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
//will called when you select or deselect
enableOrDisableButton();
}
});
public void enableOrDisableButton(){
if ((checkBoxTOS.isChecked() == true) && (checkBoxPNP.isChecked() == true)){
buttonNext.setEnabled(true);
Log.d(TAG_Clicked,"A");
} else {
buttonNext.setEnabled(false);
Log.d(TAG_Clicked,"B");
}}