0

動作しない次のコードがありますが、デバッグするにはどうすればよいですか?

新しいAndroid2.2プロジェクトを作成し、ボタンを追加しました。ボタンには次のものがあります。

    android:onClick="Test"

Test()関数はここにあります:

public void Test(View view) {
    AlertDialog.Builder builder = new AlertDialog.Builder(this.getApplicationContext());
    builder.setTitle("Title");
    builder.setMessage("Message");
    builder.setPositiveButton("ok", new OnClickListener() {
            public void onClick(DialogInterface arg0, int arg1)
            {
                // TODO Auto-generated method stub
                arg0.dismiss();
            }});
    builder.setCancelable(false);
    builder.create().show();
}

トリガーされると、次のshow()例外が発生します。

Thread [<1> main] (Suspended (exception WindowManager$BadTokenException))   
    <VM does not provide monitor information>   
    AlertDialog(Dialog).show() line: 245    
    MainActivity.Test(View) line: 39    
    Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]  
    Method.invoke(Object, Object...) line: 521  
    View$1.onClick(View) line: 2067 
    Button(View).performClick() line: 2408  
    View$PerformClick.run() line: 8817  
    ViewRoot(Handler).handleCallback(Message) line: 587 
    ViewRoot(Handler).dispatchMessage(Message) line: 92 
    Looper.loop() line: 143 
    ActivityThread.main(String[]) line: 4914    
    Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]  
    Method.invoke(Object, Object...) line: 521  
    ZygoteInit$MethodAndArgsCaller.run() line: 868  
    ZygoteInit.main(String[]) line: 626 
    NativeStart.main(String[]) line: not available [native method]

ところで、私が試した他のいくつかのことがあります:DialogFragmentが表示されません

4

2 に答える 2

3

layout.xml から android:onClick="Test" を削除して使用します

Button btn = (Button) view.findViewById(R.id.your_btn);
btn.setOnClickListener(new OnClickListener() {
test();
});

代わりは

ところで。getApplicationContext() を使用しないでください ---> これを使用してください

于 2012-11-11T23:59:24.940 に答える
1

これはユニークな LogCat です。手で書き直したのではないでしょうか... :) 次回は、LogCat を強調表示してCtrl+を押します。C

とにかく、BadTokenException が表示されます。変化する:

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

に:

new AlertDialog.Builder(MyActivity.this);
于 2012-11-11T23:51:01.187 に答える