0

10時間、アラートダイアログをアプリに追加しようとしましたが、成功しませんでした。これはばかげた質問になると思いますが、これについては本当に新しいので、AlertDialogのような多くのリンクで調査しようとしました-機能していません; SDK Android AlertDialog.Builderですが、それでもまだ問題があります。

実際、私は毎回基本的に同じ問題を抱えています。

ここに私が私を助けるためにリンクからコピーしたコードがあります:

public void dbFail(){
        AlertDialog alertDialog = new AlertDialog.Builder(this).create();
        alertDialog.setTitle("Reset...");
        alertDialog.setMessage("Are you sure?");
        alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int which) {
              // here you can add functions
           }
        });
        alertDialog.show(); 
    }

そしてここに問題があります:

コンストラクターAlertDialog.Builder(ConnectDB¹)は未定義です。

¹-それは私の文脈の名前です

だから、私は本当に何をする必要がありますか?このコンストラクターの実装について話している人は誰もいませんでした...AlertDialog.Builder呼び出し内に、彼が何をすべきかを説明するメソッドを実装する必要がありますか?


4

3 に答える 3

1

変更してみてください:

new AlertDialog.Builder(this).create();

これに:

new AlertDialog.Builder(YourActivityClassName.this).create();

ここでアクティビティのコンテキストを提供していることを確認してください(アプリケーションコンテキストではありませんgetApplicationContext())。アプリケーションコンテキストアクティビティコンテキストを混同しないでください。どちらもオブジェクトの初期化に関して重要です。

于 2012-08-06T14:05:37.393 に答える
1

コンテキストはアクティビティである必要があります。

エラーから判断するThe constructor AlertDialog.Builder(ConnectDB) is undefined.と、このAlertDialogをある種のデータベース関連のクラスで表示しようとしていると思います。

アクティビティでAlertDialogを作成するか、ConnectDBがダイアログの生成に使用できるようにActivityをConnectDBクラスに渡す必要があります。

于 2012-08-06T14:06:49.140 に答える
0

別のクラスからアラートダイアログを表示しようとしている場合は、アクティビティのインスタンスを別のクラスに渡し、そのクラスのrunOnUiThreadメソッドを呼び出す必要があります。

これが私がそれをする方法です(ゲームは活動です):

game.runOnUiThread(new Runnable() {
            public void run() {

            builder = new AlertDialog.Builder(game);
            builder.setTitle("Network Error");
            builder.setMessage("Please connect to the internet");
            builder.setCancelable(false);
            builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.cancel();
                    game.finishGame();

                }
            });

            initialized = true;

            }

        });
于 2012-08-06T14:59:24.767 に答える