1

表示に問題がありAlertDialogます。コードを実行するたびに、アプリケーションが応答しなくなり、強制終了します。ここに私のコード:

public void displayList(View ビュー){

     new AsyncTask<String, Void, List<Address>>() {

          protected List<Address> doInBackground(String... params) {
               /* 一部の操作 */
               null を返します。
          }

          protected void onPostExecute(List<アドレス> 結果) {
               場合 (結果。サイズ () == 0) {
                    /* 何かをする */
               } そうしないと {

                    /* いくつかのコード */

                    AlertDialog.Builder アラート = new AlertDialog.Builder(this);
                    alert.setMessage(sometext);
                    alert.show();
               }
          }

     }.execute(宛先);

}

ここに私のlogCatがあります

11-20 20:26:56.848: E/AndroidRuntime(29789): 致命的な例外: メイン
11-20 20:26:56.848: E/AndroidRuntime(29789): java.lang.NullPointerException
11-20 20:26:56.848: E/AndroidRuntime(29789): android.app.AlertDialog.resolveDialogTheme(AlertDialog.java:142)
11-20 20:26:56.848: E/AndroidRuntime(29789): android.app.AlertDialog$Builder で。(AlertDialog.java:359)
11-20 20:26:56.848: E/AndroidRuntime (29789): com.ceria.tuntun.MainActivity$5.onPostExecute (MainActivity.java:201) で
11-20 20:26:56.848: E/AndroidRuntime (29789): com.ceria.tuntun.MainActivity$5.onPostExecute (MainActivity.java:1) で
11-20 20:26:56.848: E/AndroidRuntime(29789): android.os.AsyncTask.finish(AsyncTask.java:602)
11-20 20:26:56.848: E/AndroidRuntime(29789): android.os.AsyncTask.access$600(AsyncTask.java:156)
11-20 20:26:56.848: E/AndroidRuntime(29789): android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:615) で
11-20 20:26:56.848: E/AndroidRuntime(29789): android.os.Handler.dispatchMessage(Handler.java:99)
11-20 20:26:56.848: E/AndroidRuntime(29789): android.os.Looper.loop(Looper.java:137)
11-20 20:26:56.848: E/AndroidRuntime(29789): android.app.ActivityThread.main(ActivityThread.java:4511)
11-20 20:26:56.848: E/AndroidRuntime(29789): java.lang.reflect.Method.invokeNative(ネイティブメソッド)
11-20 20:26:56.848: E/AndroidRuntime(29789): java.lang.reflect.Method.invoke(Method.java:511)
11-20 20:26:56.848: E/AndroidRuntime(29789): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980) で
11-20 20:26:56.848: E/AndroidRuntime (29789): com.android.internal.os.ZygoteInit.main (ZygoteInit.java:747) で
11-20 20:26:56.848: E/AndroidRuntime(29789): dalvik.system.NativeStart.main(ネイティブメソッド)

何が起こるかわかりません。私は AlertDialog を何度も使用してきましたが、なぜこれが機能しないのか疑問に思っています。

ありがとうございました

4

3 に答える 3

3
AlertDialog.Builder alert = new AlertDialog.Builder(this);

「this」は非同期タスクの匿名の内部クラスを参照し、アクティビティからのコンテキストが必要なためです

于 2012-11-20T13:25:34.350 に答える
2

これを使って..

AlertDialog.Builder alert = new AlertDialog.Builder(yourActivity.this);

また、TabHost で AlertDialog を使用している場合は、以下の行を使用します。

AlertDialog.Builder alert = new AlertDialog.Builder(getParent());
于 2012-11-20T13:27:57.877 に答える
1

ダイアログの作成中に間違ったコンテキストを使用しています。thisキーワードは現在のオブジェクトへの参照thisであり、コンテキストで使用している間はAsyncTask オブジェクトを参照しますAsyncTaskthisこれが犯人です。親アクティビティ オブジェクトをコンテキストとして使用する必要があります。これは、次のように書くことで実現できますYouActivityClassName.this

AlertDialog.Builder alert = new AlertDialog.Builder(YouActivityClassName.this);
于 2012-11-20T13:35:02.457 に答える