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()'在空对象引用上
输出此错误并且不确定原因,并且只想帮助解决此问题。提前致谢
答案 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;
}