强制关闭以生成AlertDialog和DialogInterface

时间:2012-11-06 07:44:16

标签: android dialog onclick alertdialog android-alertdialog

这是我的代码:

    btnSendSMS.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            final String phoneNo = txtPhoneNo.getText().toString();

            final String message = '\u00AB' + "smsmks" + '\u00BB' + ' '
                    + txtMessage.getText().toString();
            if ((phoneNo.length() > 0) && (message.length() > 0)) {
                //pilihan, mengirim citra gambar atau tidak
                final CharSequence[] items = { "Text", "Image" };
                AlertDialog.Builder kk = new AlertDialog.Builder(getBaseContext());
                kk.setTitle("Pilih Metode Penginputan");
                kk.setItems(items, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int x) {
                        Intent i = null;
                        if ("Text".equals(items[x])) {
                            sendSMS(phoneNo, message);
                            Toast.makeText(getBaseContext(), phoneNo,
                                    Toast.LENGTH_SHORT).show();

                        } else {
                            i = new Intent(TulisPesanLontara.this,
                                    KonversiGambar.class);
                            startActivity(i);
                        }
                    }
                }).show();  

            } else
                Toast.makeText(getBaseContext(),
                        "Please enter both phone number and message.",
                        Toast.LENGTH_SHORT).show();
        }
    }

没有发现错误,但是如果我跑了,我点击了项目,我强行关闭。你能帮我吗?谢谢你们(抱歉英语不好)

这是我的logcat

11-06 15:48:27.658:D / fastDelete(5657):=============结束处理删除事件============= =============== 11-06 15:48:28.307:我/ fastDelete(5657):!!! fastDelete阶段结束!!! 11-06 15:48:30.371:D / AndroidRuntime(5657):关闭VM 11-06 15:48:30.371:W / dalvikvm(5657):threadid = 1:线程退出,未捕获异常(组= 0x40020648) 11-06 15:48:30.373:E / AndroidRuntime(5657):致命异常:主要 11-06 15:48:30.373:E / AndroidRuntime(5657):android.view.WindowManager $ BadTokenException:无法添加窗口 - 令牌null不适用于应用程序 11-06 15:48:30.373:E / AndroidRuntime(5657):在android.view.ViewRoot.setView(ViewRoot.java:568) 11-06 15:48:30.373:E / AndroidRuntime(5657):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:209) 11-06 15:48:30.373:E / AndroidRuntime(5657):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:123) 11-06 15:48:30.373:E / AndroidRuntime(5657):在android.app.Dialog.show(Dialog.java:272) 11-06 15:48:30.373:E / AndroidRuntime(5657):在android.app.AlertDialog $ Builder.show(AlertDialog.java:849) 11-06 15:48:30.373:E / AndroidRuntime(5657):at com.ariefspekta.smsmakassar.TulisPesanLontara $ 4.onClick(TulisPesanLontara.java:177) 11-06 15:48:30.373:E / AndroidRuntime(5657):在android.view.View.performClick(View.java:2535) 11-06 15:48:30.373:E / AndroidRuntime(5657):在android.view.View $ PerformClick.run(View.java:9130) 11-06 15:48:30.373:E / AndroidRuntime(5657):在android.os.Handler.handleCallback(Handler.java:618) 11-06 15:48:30.373:E / AndroidRuntime(5657):在android.os.Handler.dispatchMessage(Handler.java:123) 11-06 15:48:30.373:E / AndroidRuntime(5657):在android.os.Looper.loop(SourceFile:351) 11-06 15:48:30.373:E / AndroidRuntime(5657):在android.app.ActivityThread.main(ActivityThread.java:3850) 11-06 15:48:30.373:E / AndroidRuntime(5657):at java.lang.reflect.Method.invokeNative(Native Method) 11-06 15:48:30.373:E / AndroidRuntime(5657):at java.lang.reflect.Method.invoke(Method.java:538) 11-06 15:48:30.373:E / AndroidRuntime(5657):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:901) 11-06 15:48:30.373:E / AndroidRuntime(5657):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:659) 11-06 15:48:30.373:E / AndroidRuntime(5657):at dalvik.system.NativeStart.main(Native Method) 11-06 15:48:37.789:I / Process(5657):发送信号。 PID:5657 SIG:9

2 个答案:

答案 0 :(得分:0)

将getBaseContext()替换为getApplicationContext()或使用ActivityName.this。

答案 1 :(得分:0)

只是在getBaseContext的地方传递整个应用程序使用getApplicationContext()的引用,因为getBaseContext只接受特定的活动引用。

相关问题