你能告诉我这里的错误是什么吗?它告诉我 toast make 中的“性别”必须设置为 final,但是当我这样做时,if 语句提示它不应该是 final
@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);
}
});
}
}
最佳答案
您不能从内部类访问局部非最终变量。一个简单的解决方法是在设置性别初始值后采用另一个最终变量。这样做:
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();
还有其他方法,但这是最快的。
关于android - 内部类中的最终变量问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10236446/