0

TextView の onClick メソッドでダイアログを表示しようとしています。ログを使用してダイアログボックスなしで onClick をテストしたところ、動作しました。ダイアログボックスを追加すると、次のようになります。

Context context = getApplicationContext();
            Dialog d = new Dialog(context);
            d.setTitle("Test");
            TextView testField = new TextView(context);
            testField.setText("Success!");
            d.setContentView(testField);
            d.show();

これはすべて、textView の onClick メソッドにあります。ウィンドウを追加できないという例外が表示されます-トークンnullはアプリケーション用ではありません。

なぜこれが機能しないのか、誰かが私に説明してもらえますか。Androidで例外を取得することについてここにたくさんの質問があり、答えは常にコードの順序に関係しています。コードの順序についての参照はどこかにありますか?!

ありがとう!

4

2 に答える 2

0

それ以外のDialog d = new Dialog(context);

使用するDialog d = new Dialog(this);

から取得したコンテキストgetApplicationContext();をダイアログに使用しないでください。

詳細については、質問を参照してください:

コンテキストとして getApplication() を使用して「ウィンドウを追加できません — トークン null はアプリケーション用ではありません」をスローするダイアログ

于 2012-10-06T14:36:30.933 に答える
0

onClick() でダイアログを作成するときは、常に使用します

void onClick(View v)
{
    Dialog d = new Dialog(v.getContext());
                          ^^^^^^^^^^^^^^
    TextView testField = new TextView(v.context);
    testField.setText("Success!");
    d.setContentView(testField);
    d.show();
}
于 2012-10-06T14:40:42.673 に答える