在标记的行str
中,要求我将str
设置为本地变量
public void alertShow(String s){
//Game Ended...!!!
android.support.v7.app.AlertDialog.Builder alertDialog = new android.support.v7.app.AlertDialog.Builder(this);
// Setting Dialog Title
if(s.equals("You") || (s.contains("P")))
alertDialog.setTitle("Congratulations...");
else
alertDialog.setTitle("Game's Up...");
// Setting Dialog Message
if(s.equals("You") || s.contains("P"))
alertDialog.setMessage(s+" Win The Game...");
else
alertDialog.setMessage("You Lose... I Win...");
final ImageView img = new ImageView(this);
if(s.equals("You") || (s.contains("P")))
img.setImageResource(R.drawable.firecrackers);
else
img.setImageResource(R.drawable.mmm);
alertDialog.setView(img);
// Setting Dialog Cancellation
alertDialog.setCancelable(false);
// Setting Positive "Yes" Button
//==================Here Problem Starts==========================
SessionClass sessionClass = new SessionClass();
final String str = sessionClass.getPlayer();
alertDialog.setPositiveButton("Try Again", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Intent i;
if (str.contains("1"))
i = new Intent(MainActivity2.this, Toss.class);
else
i = new Intent(MainActivity2.this, Game2.class);
startActivity(i);
finish();
}
});
//=====================================================
// Setting Negative "NO" Button
alertDialog.setNegativeButton("Main Menu", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Intent i = new Intent(MainActivity2.this, MainActivity2.class);
startActivity(i);
finish();
}
});
// Showing Alert Message
alertDialog.show();
}
我想从onClickListener访问str,它是在onClickListener之外声明的。 我尝试了以下代码,但它没有访问变量。
答案 0 :(得分:2)
您需要将onClickListener
变量标记为{{1}},然后才能从{{1}}
答案 1 :(得分:0)
访问封闭范围的本地变量,以及声明和访问匿名类的成员
与本地类一样,匿名类可以捕获变量;他们对封闭范围的局部变量具有相同的访问权限:
匿名类可以访问其封闭类的成员。
匿名类无法访问其封闭范围内未声明为最终或有效最终的局部变量。
将您的字符串标记为final
,然后就可以使用它了。
答案 2 :(得分:0)
最后,应该让你在AlertDialoge中访问你的变量, 你能否确认你实际上从这个方法获得了字符串(getPlayer();)?
我问这个的原因是(你没有检查null)并且如果该方法返回null,那么当你想检查null是否为“1”时你会得到错误。