簡體   English   中英

外部類中的Android對話框處理程序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM