0

晚上好。我是Android开发的初学者。我不想弄脏我的主要活动课程,这就是为什么我要使用一些外部课程(我可以为某些外部课程提供“这个”吗?)。我的问题可能很简单。我想显示 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);
    }
}

在外部课程中创建所有菜单是一种“好习惯”吗?

4

2 回答 2

0

在第三类中分离对话代码并不是一个坏主意。特别是当您在整个应用程序中显示相同的对话框时。

在传递上下文时,请确保传递活动上下文而不是应用程序上下文。

您将能够使用相同的上下文来完成您的活动。

于 2013-04-12T20:38:53.303 回答
0

我的理解是,您想通过传递上下文然后调用完成来使用单独的类来完成一个活动。上面描述的方法应该足够了。

public static void exitActivity(Context activityContext){
   ...
   (Activity)activityContext.finish();
   ...
}

是的,正如在另一篇文章中提到的,你应该确保你传递了正确的上下文。上下文可能与视图或线程等相关。因此请确保传入 Activity 上下文。

于 2013-04-12T20:42:27.977 回答