RadioGroup查找所选的id

时间:2015-07-12 09:54:22

标签: android radio-group

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;
    }
}

}

ERROR java.lang.NullPointerException:尝试调用虚方法' int android.widget.RadioGroup.getCheckedRadioButtonId()'在空对象引用上

输出此错误并且不确定原因,并且只想帮助解决此问题。提前致谢

3 个答案:

答案 0 :(得分:0)

final int INITIAL_OFFSET = 0;
final int INITIAL_LIMIT = 30;
// Loading first 30 users to immediately update UI (better UX)
getServerApi().getAllFriends(userId, "photo_50", INITIAL_OFFSET, INITIAL_LIMIT)
        // Loading remaining users 100 by 100 and updating UI after all users been loaded
        .flatMap(users -> {
            AtomicInteger newOffset = new AtomicInteger(INITIAL_LIMIT);
            return Observable.just(users)
                    .flatMap(users1 -> getServerApi().getAllFriends(userId, "photo_50", newOffset.get(), Config.DEFAULT_FRIEND_REQUEST_COUNT))
                    .subscribeOn(Schedulers.io())
                    .observeOn(Schedulers.io())
                    .collect(() -> new ArrayList<User>(), (b, s) -> {
                        b.addAll(s);
                        newOffset.set(newOffset.get() + Config.DEFAULT_FRIEND_REQUEST_COUNT);
                    })
                    .repeat()
                    .takeUntil(friends -> friends.size() == 0);
        })
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(users -> getView().appendAllFriends(users),
                throwable -> getView().setError(processFail(throwable, ServerApi.Action.GET_ALL_FRIENDS), false));

答案 1 :(得分:0)

您没有初始化它。你需要将它添加到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 :(得分:0)

第1,您的RadioGroup永远不会被初始化,第2,您在本地重新定义了您的类变量但从未使用它Boolean maleOrFemale = true;,所以我猜您必须将其更改为maleOrFemale = true;和第3,整个方法可以简化为

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