晚上好。我是Android开发的初学者。我不想弄脏我的主要活动类,为什么我想使用一些外部类(我可以为某些外部类提供“this”吗?)。我的问题可能相当简单。我想显示AlertDialog。 所以我的班级
public class Dialogs {
public static void exitActivity(Context c ){
AlertDialog.Builder builder = new AlertDialog.Builder(c);
//Construct dialog
builder.setMessage("Are your sure you want to exit?");
builder.setCancelable(false);
//Listener for yes button
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
FifteenActivity.c.finish(); ////<<< Here is an error >>>>//
}
});
//Listener for no button
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.newGame:
restart();
return true;
case R.id.settings:
return true;
case R.id.info:
return true;
case R.id.help:
return true;
case R.id.exit:
Dialogs.exitActivity(this);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
在外部课程中创建所有菜单是一种“好习惯”吗?
答案 0 :(得分:0)
在第三个类中分隔对话框代码并不是一个坏主意。特别是当您在整个应用程序中显示相同的对话框时。
传递上下文时,请确保传递活动上下文而不是应用程序上下文。
您将能够使用相同的上下文来完成您的活动。
答案 1 :(得分:0)
我理解的是,您希望通过传递上下文然后在其上调用finish来使用单独的类完成一个Activity。上述方法应该足够了。
public static void exitActivity(Context activityContext){
...
(Activity)activityContext.finish();
...
}
是的,正如另一篇文章所述,你应该确定你传递的是正确的上下文。上下文可以相对于视图或线程等。所以请确保传入Activity上下文。