【问题标题】:RadioGroup finding selected idRadioGroup 查找选定的 id
【发布时间】:2015-07-12 09:54:21
【问题描述】:
private static final String TAG = MainActivity.class.getSimpleName();
EditText etName;
EditText etAge;
Button bPredict;
RadioGroup rdGroup;
Boolean maleOrFemale;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    getSupportActionBar().hide();

    bPredict = (Button)findViewById(R.id.b_predict);
    etName = (EditText)findViewById(R.id.et_name);
    etAge = (EditText)findViewById(R.id.et_age);

    bPredict.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String name = etName.getText().toString();
            String age = etAge.getText().toString();
            maleOrFemale = false;
            maleOrFemale = radioGroup();
            predictIntent(name, age, maleOrFemale);
        }
    });
}

public void predictIntent(String name, String num, Boolean maleOrFemale){
    Intent toPredictActivity = new Intent(this, predict.class);
    toPredictActivity.putExtra("name", name);
    toPredictActivity.putExtra("age", num);
    toPredictActivity.putExtra("maleOrFemale", maleOrFemale);
    startActivity(toPredictActivity);
}

public boolean radioGroup(){
    Boolean maleOrFemale = true;
    int selectedId = rdGroup.getCheckedRadioButtonId();

    if (selectedId == R.id.rd_male) {
       return false;
    }else{
        return true;
    }
}

}

错误 java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“int android.widget.RadioGroup.getCheckedRadioButtonId()”

这个错误是输出,不知道为什么,只是希望有人帮助解决这个问题。提前致谢

【问题讨论】:

  • 您的问题是什么?很不清楚。
  • @yshahak 更新问题
  • 所以问题是“rdGroup”为空。将您的 onCreate 代码放入问题中。

标签: android radio-group


【解决方案1】:

你没有初始化它。您需要将其添加到 onCreate:

@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);

   getSupportActionBar().hide();

   rdGroup = (RadioGroup)findViewById(R.id.the_id_as_define_in_xml);

   bPredict = (Button)findViewById(R.id.b_predict);
   etName = (EditText)findViewById(R.id.et_name);
   etAge = (EditText)findViewById(R.id.et_age);
}
//rest of code

【讨论】:

    【解决方案2】:
    public boolean getSelectedGender()
    {
        int checkedId = rgGender.getCheckedRadioButtonId();
        if(checkedId == R.id.rbMale) {
            return true;    // male
        }
        else {
            return false;   // female
        }
    }
    

    【讨论】:

      【解决方案3】:

      1st,你的RadioGroup 永远不会初始化,2nd,你在本地重新定义你的类变量但从不使用它Boolean maleOrFemale = true;,所以我猜你必须将它更改为 maleOrFemale = true; 和3rd,整个方法可以减少到

       public boolean radioGroup(){
         return rdGroup.getCheckedRadioButtonId() == R.id.rd_male;
       }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-04-08
        • 1970-01-01
        • 1970-01-01
        • 2016-10-02
        • 2012-11-05
        • 2016-08-14
        • 2013-05-24
        相关资源
        最近更新 更多