5

作ろうとしているゲームのほとんどを完成させ、プロジェクト全体を通して、SurfaceView と Thread も呼び出す 1 つの特定のアクティビティを作成しました。3 つのクラスのそれぞれに update() メソッドを配置して、何かが変更されるたびに他のクラスがどこにあるかをそれぞれが認識できるようにします。どうやら、このようなことを行う唯一の方法は、静的メソッドを使用することです...これは、SurfaceView で衝突が発生し、Activity に何をすべきかを伝えたいまでは問題ありません。情報を中継することはできますが、AlertDialog を作成する方法が見つかりません。

静的メソッドから showDialog() を呼び出すことができないことは理解していますが、非静的メソッドを作成してそれを呼び出し、そのメソッドを静的メソッドから呼び出す方法を見つけることができません。私は答えを探していて、オブジェクトのインスタンス化について何か聞いたことがありますが、それが何を意味するのかわかりません...

誰かがこれを回避するための良いアイデアを持っている場合は、私に知らせてください:)

4

2 に答える 2

9

これが私が使用したものです:

public static void messageDialog(Activity a, String title, String message){
    AlertDialog.Builder dialog = new AlertDialog.Builder(a);
    dialog.setTitle(title);
    dialog.setMessage(message);
    dialog.setNeutralButton("OK", null);
    dialog.create().show();     

}
于 2012-05-01T07:33:44.100 に答える
0

SurfaceViewはViewを拡張するため、getContext()メソッドがあります

AlertDialogを作成して表示するには、SurfaceView内で次のコードを実行できます

AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setTitle("title");
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int which) {
    dialog.dismiss();
    }
});
Dialog d = builder.create();
d.show();

アクティビティが再開された場合、これはActivity.showDialog(int)として機能しない可能性があります(ダイアログが単に消えて、状態を自分で処理する必要がある場合があります)。

お役に立てれば

于 2011-05-12T13:19:19.593 に答える