我在此活动中有 1个活动和 3个片段。
在3个片段中,当复选框被选中或者edittext不为空时,我的布尔值返回true ..
当editTexts不为空且我的复选框被选中时,我想无法按钮。
当我向方法EditTextCompleted()添加类似sexMan.isChecked()的内容时 我的应用程序粉碎....
那么如何在一个地方连接这个条件呢?
复选框侦听器
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked){
mSendInfoFromBmrFragment.sexChecked(true);
switch (buttonView.getId()){
case R.id.sexMan:
mSendInfoFromBmrFragment.sex(BmrCalculation.SEX_MAN);
sexMan.setChecked(true);
sexWoman.setChecked(false);
break;
case R.id.sexWoman:
sexMan.setChecked(false);
sexWoman.setChecked(true);
mSendInfoFromBmrFragment.sex(BmrCalculation.SEX_WOMAN);
break;
编辑文字监听器
@覆盖 public void afterTextChanged(Editable s){
if ( s == weightEditText.getEditableText()){
mSendInfoFromBmrFragment.getweight(Integer.parseInt(s.toString()));
mWeight = Integer.parseInt(s.toString());
} else if ( s == heightEditText.getEditableText()) {
mSendInfoFromBmrFragment.getheight(Integer.parseInt(s.toString()));
mHeight = Integer.parseInt(s.toString());
} else if ( s == ageEditText.getEditableText()){
mSendInfoFromBmrFragment.getage(Integer.parseInt(s.toString()));
mAge = Integer.parseInt(s.toString());
}
if ( (!(weightEditText.getEditableText().toString().equals("")) && !(heightEditText.getEditableText().toString().equals("")) && !(ageEditText.getEditableText().toString().equals("")))) {
mSendInfoFromBmrFragment.editTextComplete(true);
} else {
mSendInfoFromBmrFragment.editTextComplete(false);
}
}
接口
public interface sendInfoFromBmrFragment {
public void getheight(int height);
public void getweight(int weight);
public void getage(int age);
public void editTextComplete(boolean editTextComplete);
public void sex(String sex);
}
答案 0 :(得分:1)
对于单选按钮,如果您知道它们的编号并且它们是静态的,您可以声明一个数组,请执行以下操作:
public Boolean AllRadiosAreChecked;
private Boolean Checked[] =
{
false, // sexMan is checked ?
false // sexWoman is checked ?
};
然后,在同一个活动中,修改OnCheckedChanged
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked){
switch (buttonView.getId()){
case R.id.sexMan:
Checked[0]=true;
break;
case R.id.sexWoman:
Checked[1]=true;
break;
然后,如果选中所有单选按钮,则检查所需的任何位置:
AllRadiosAreChecked=true;
for (int i = 0; i < 2; i++)
{
if (!Checked[i])
{
AllRadiosAreChecked= false;
}
}
if(!AllRadiosAreChecked){
// NOT all radio buttons are checked
}
else{
// All radio buttons are checked enter code here
}
必须将数组中的条件声明为分组无线电。
祝你好运
答案 1 :(得分:0)
您可以在复选框中添加回调,然后它们都是真的,您需要在父活动中使用call方法(例如,发送活动片段ID和布尔值)。要从活动中调用方法,您需要使用下一个代码
((ParentActivity)getActivity()).yourMethod();
然后,活动从您需要更改按钮可见性的所有片段中收到所有布尔值。
答案 2 :(得分:0)
如果你有edittext,你可以添加textchangelistener,如果你有复选框可以添加它的监听器,在监听器中你可以检查验证。根据验证,您可以启用或禁用下一个活动的按钮。您可以将该按钮设置为静态以从其他类访问。
在每个监听器中,您可以调用一个公共静态方法,每次检查所有验证,如果满足则方法将返回true,您可以启用按钮。