所有字段都不为空时转到另一个活动

时间:2015-12-15 16:37:29

标签: android methods interface android-lifecycle

我在此活动中有 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);

    }

3 个答案:

答案 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,您可以启用按钮。