java如何在警报对话框的onclick侦听器中访问非final变量而不使其成为final
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
String choice="";
AlertDialog.Builder builder1 = new AlertDialog.Builder(parent.getContext());
builder1.setMessage("Do you want to accept this vendor's quote?");
builder1.setCancelable(true);
builder1.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
choice= "true" //cant access non final variable
}
});
builder1.setNegativeButton("No",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert11 = builder1.create();
alert11.show();
if(choice.equals("true"){
// do something
}
}
如何访问“choice”变量而不使其成为最终变量,或者是否有其他方法来了解用户是否按下了正按钮或负按钮
# 1 楼答案
干净的方法是让
onClick
方法调用父类中的“setter”方法# 2 楼答案
变量必须是最终变量,例如Eclipse表示:
# 3 楼答案
在类定义的正外部声明变量
# 4 楼答案
将变量声明为类中的字段: