java - 警报对话框打不开

标签 java android android-alertdialog

我编写了一个与 SQLite DB 通信的程序。现在,我尝试添加一个窗口来确认用户是否确实想要清理数据库,但我有一些错误。这是我的第一个窗口警报对话框。

    cleanbtm.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());
            builder.setMessage(R.string.confirm_clean_table)
            .setCancelable(false)
            .setPositiveButton(R.string.afirmative_text, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    dbAdapter dbAdapter = new dbAdapter(getApplicationContext());
                    dbAdapter.eraseGoods();   
                }
            })
            .setNegativeButton(R.string.negative_text, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    dialog.cancel();
                }
            });
            AlertDialog alert = builder.create();
            alert.show();

        }
    });

LogCat 显示以下错误:

03-13 13:12:49.445: W/KeyCharacterMap(224): No keyboard for id 0
03-13 13:12:49.452: W/KeyCharacterMap(224): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
03-13 13:13:03.212: I/dalvikvm(224): threadid=7: reacting to signal 3
03-13 13:13:03.232: I/dalvikvm(224): Wrote stack trace to '/data/anr/traces.txt'
03-13 13:13:04.522: D/dalvikvm(224): GC freed 3476 objects / 231880 bytes in 86ms
03-13 13:13:14.432: I/global(224): Default buffer size used in BufferedInputStream constructor. It would be better to be explicit if an 8k buffer is required.
03-13 13:13:18.524: W/KeyCharacterMap(224): No keyboard for id 0
03-13 13:13:18.524: W/KeyCharacterMap(224): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
03-13 13:13:23.002: D/AndroidRuntime(224): Shutting down VM
03-13 13:13:23.002: W/dalvikvm(224): threadid=3: thread exiting with uncaught exception (group=0x4001aa28)
03-13 13:13:23.002: E/AndroidRuntime(224): Uncaught handler: thread main exiting due to uncaught exception
03-13 13:13:23.024: E/AndroidRuntime(224): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
03-13 13:13:23.024: E/AndroidRuntime(224):  at android.view.ViewRoot.setView(ViewRoot.java:460)
03-13 13:13:23.024: E/AndroidRuntime(224):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
03-13 13:13:23.024: E/AndroidRuntime(224):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
03-13 13:13:23.024: E/AndroidRuntime(224):  at android.app.Dialog.show(Dialog.java:238)
03-13 13:13:23.024: E/AndroidRuntime(224):  at com.remotedata.firstapp.chartView$2.onClick(chartView.java:54)
03-13 13:13:23.024: E/AndroidRuntime(224):  at android.view.View.performClick(View.java:2344)
03-13 13:13:23.024: E/AndroidRuntime(224):  at android.view.View.onTouchEvent(View.java:4133)
03-13 13:13:23.024: E/AndroidRuntime(224):  at android.widget.TextView.onTouchEvent(TextView.java:6510)
03-13 13:13:23.024: E/AndroidRuntime(224):  at android.view.View.dispatchTouchEvent(View.java:3672)
03-13 13:13:23.024: E/AndroidRuntime(224):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882)
03-13 13:13:23.024: E/AndroidRuntime(224):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882)
03-13 13:13:23.024: E/AndroidRuntime(224):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882)
03-13 13:13:23.024: E/AndroidRuntime(224):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882)
03-13 13:13:23.024: E/AndroidRuntime(224):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1712)
03-13 13:13:23.024: E/AndroidRuntime(224):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1202)
03-13 13:13:23.024: E/AndroidRuntime(224):  at android.app.Activity.dispatchTouchEvent(Activity.java:1987)
03-13 13:13:23.024: E/AndroidRuntime(224):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1696)
03-13 13:13:23.024: E/AndroidRuntime(224):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1658)
03-13 13:13:23.024: E/AndroidRuntime(224):  at android.os.Handler.dispatchMessage(Handler.java:99)
03-13 13:13:23.024: E/AndroidRuntime(224):  at android.os.Looper.loop(Looper.java:123)
03-13 13:13:23.024: E/AndroidRuntime(224):  at android.app.ActivityThread.main(ActivityThread.java:4203)
03-13 13:13:23.024: E/AndroidRuntime(224):  at java.lang.reflect.Method.invokeNative(Native Method)
03-13 13:13:23.024: E/AndroidRuntime(224):  at java.lang.reflect.Method.invoke(Method.java:521)
03-13 13:13:23.024: E/AndroidRuntime(224):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
03-13 13:13:23.024: E/AndroidRuntime(224):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
03-13 13:13:23.024: E/AndroidRuntime(224):  at dalvik.system.NativeStart.main(Native Method)
03-13 13:13:23.032: I/dalvikvm(224): threadid=7: reacting to signal 3
03-13 13:13:23.041: I/dalvikvm(224): Wrote stack trace to '/data/anr/traces.txt'

最佳答案

您需要提供 Activity 作为上下文......

AlertDialog.Builder builder = new AlertDialog.Builder(Activity.this);

关于java - 警报对话框打不开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9684797/

相关文章:

android - 更改警报对话框的文本颜色

java - ImageLayoutBinding存在,ImageLayoutBindingImpl不存在,DataBinderMapperImpl在寻找impl文件。我怎样才能解决这个问题?

android - 打开 AVD 管理器时出错

android - 如何调整启动器中矢量图标的大小

android - 无法为 android 测试项目生成正确的 build.xml

Android 警报对话框不会关闭

android - 没有 url 的 TextView 上的超链接未显示且不可单击

Java ProcessBuilder 无法执行我的命令

java - opentsdb 是否接受特殊字符,如度数符号 (°)、% 或 ²

java - 在 Android 中获取 400 HTTP 响应的响应正文?