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

ダイアログ コードを 3 番目のクラスに分けるのは悪い考えではありません。特に、アプリケーション全体で同じダイアログを表示している場合。

コンテキストを渡すときは、アプリケーション コンテキストではなくアクティビティ コンテキストを渡すようにしてください。

そして、同じコンテキストを使用してアクティビティを完了することができます。

于 2013-04-12T20:38:53.303 に答える
0

私が理解しているのは、別のクラスを使用してコンテキストを渡し、それに対して終了を呼び出すことで、アクティビティを終了したいということです。上記の方法で十分です。

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

はい、他の投稿で述べたように、正しいコンテキストを渡していることを確認する必要があります。コンテキストは、ビューやスレッドなどに関連している可能性があります。そのため、Activity コンテキストを渡すようにしてください。

于 2013-04-12T20:42:27.977 に答える