[英]Android Dialog Handler in external class
晚上好。 我是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);
}
}
在外部類中創建所有菜單是一種“好的做法”嗎?
將您的對話框代碼分成第三類並不是一個壞主意。 特別是在整個應用程序中顯示相同對話框時。
在傳遞上下文時,請確保傳遞活動上下文而非應用程序上下文。
您將能夠使用相同的上下文來完成您的活動。
我的理解是,您希望通過傳遞上下文然后在其上調用finish來使用單獨的類來完成一個Activity。 上述方法就足夠了。
public static void exitActivity(Context activityContext){
...
(Activity)activityContext.finish();
...
}
是的,正如另一篇文章中所述,您應該確保傳遞正確的上下文。 該上下文可以相對於視圖或線程等。因此,請確保您傳入了Activity上下文。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.