你能告诉我这里的错误是什么吗?它告诉我吐司中的“性别”必须设置为最终,但是当我这样做时,if语句会抱怨它不应该是最终的
@Override
protected void onCreate(Bundle savedInstanceState) {
String gender = null;
Toast.makeText(this, R.string.ok, Toast.LENGTH_LONG).show();
super.onCreate(savedInstanceState);
setContentView(R.layout.createprofile);
RadioButton rb_male = (RadioButton) findViewById(R.id.maleradiobutton);
String male=rb_male.getText().toString();
RadioButton rb_female = (RadioButton) findViewById(R.id.femaleradiobutton);
String female=rb_male.getText().toString();
if(rb_male.isChecked()) { gender = "male";}
if(rb_female.isChecked()){ gender = "female";}
Button checkgender = (Button) findViewById(R.id.gendercheck);
checkgender.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Toast.makeText(ProfileActivity.this, gender.toString(), Toast.LENGTH_LONG);
}
});
}
}
答案 0 :(得分:4)
您无法从内部类访问本地非最终变量。一个简单的解决方法是在设置性别的初始值后获取另一个最终变量。这样做:
if(rb_male.isChecked()) { gender = "male";}
if(rb_female.isChecked()){ gender = "female";}
final String finalGender = gender;
以后
Toast.makeText(ProfileActivity.this, finalGender.toString(), Toast.LENGTH_LONG).show();
还有其他方法可以做到,但这是最快的。
答案 1 :(得分:1)
错误是:
Toast.makeText(ProfileActivity.this, gender.toString(), Toast.LENGTH_LONG);
应该是
Toast.makeText(v.getContext(), gender.toString(), Toast.LENGTH_LONG).show();
您还可以将性别变为类范围变量,以便您可以使用setter / getter访问它
答案 2 :(得分:1)
你在onclick toast中缺少.show():
public void onClick(View v) {
Toast.makeText(ProfileActivity.this, gender.toString(),
Toast.LENGTH_LONG).show();
}
});
答案 3 :(得分:1)
你有太多的错误可以完全解决。它们包括:
if
语句必须位于onClick(v)方法内。如果它们在外面,那么点击不会导致它们被重新评估,并且更改按钮的数量不会改变您获得的结果。 gender
已经是一个字符串,gender.toString()
没有做任何改变。 说了这么多,这里的代码中有很多变化,可能还有其他一些东西被清理了一下。
祝你好运!公共类AndroidTest扩展了Activity {
String gender = null;
RadioButton rb_male;
RadioButton rb_female;
Button checkgender;
@Override
protected void onCreate(Bundle savedInstanceState) {
Toast.makeText(this, "OK", Toast.LENGTH_LONG).show();
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
rb_male = (RadioButton) findViewById(R.id.maleradiobutton);
rb_female = (RadioButton) findViewById(R.id.femaleradiobutton);
checkgender = (Button) findViewById(R.id.gendercheck);
checkgender.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (rb_male.isChecked()) {
gender = "male";
}
if (rb_female.isChecked()) {
gender = "female";
}
Toast.makeText(AndroidTest.this, (CharSequence) gender, Toast.LENGTH_LONG).show();
}
});
}
}