应用程序在尝试显示对话框时崩溃。

11 浏览
0 Comments

应用程序在尝试显示对话框时崩溃。

只是一个简单的事情,当点击按钮时,应用程序应该显示对话框。但是当点击按钮时,它会崩溃。而且我不明白logCat错误想要表达什么。\n

 addImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final Dialog dialog = new Dialog(getApplication());
                dialog.setContentView(R.layout.custom_dialog_box);
                dialog.setTitle("Alert Dialog View");
                Button btnExit = (Button) dialog.findViewById(R.id.btnExit);
                btnExit.setOnClickListener(new View.OnClickListener() {
                    @Override public void onClick(View v) {
                        dialog.dismiss();
                    }
                });
                dialog.findViewById(R.id.btnChoosePath)
                        .setOnClickListener(new View.OnClickListener() {
                            @Override public void onClick(View v) {
                               // activeGallery();
                            }
                        });
                dialog.findViewById(R.id.btnTakePhoto)
                        .setOnClickListener(new View.OnClickListener() {
                            @Override public void onClick(View v) {
                                //activeTakePhoto();
                            }
                        });
                // 在屏幕上显示对话框
                dialog.show();
            }
            });

\nxml\n



    

\nLogCat错误\n

12-09 17:57:34.344  18804-18804/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
    android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
            at android.view.ViewRootImpl.setView(ViewRootImpl.java:698)
            at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:248)
            at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
            at android.app.Dialog.show(Dialog.java:281)
            at com.example.project.myapplication.GUI.AddMoreClaims$1.onClick(AddMoreClaims.java:68)
            at android.view.View.performClick(View.java:4230)
            at android.view.View$PerformClick.run(View.java:17660)
            at android.os.Handler.handleCallback(Handler.java:800)
            at android.os.Handler.dispatchMessage(Handler.java:100)

\n其中(AddMoreClaims.java:68)指的是dialog.show();。这里出了什么问题?

0
0 Comments

App crashed when try to display dialog box的出现的原因是使用了application Context来创建对话框,而应该使用Activity Context。

解决方法是使用正确的Context来创建对话框:

new Dialog(MyActivity.this); //如果使用的是Activity
new Dialog(getActivity()); //如果使用的是Fragment

0
0 Comments

App在尝试显示对话框时崩溃的原因是由于getApplication()返回了null。解决方法是使用v.getContext()ActivityName.this来创建Dialog对象:

final Dialog dialog = new Dialog(v.getContext());
或
final Dialog dialog = new Dialog(ActivityName.this);

0
0 Comments

(App crashed when try to display dialog box)这个问题的出现的原因是dialog声明的方式不正确。对于Activity,应该使用以下代码进行声明:

final Dialog dialog = new Dialog(Your_Activity_Name.this);

对于Fragment,应该使用以下代码进行声明:

final Dialog dialog = new Dialog(getActivity());

解决方法就是根据当前的上下文选择正确的方式来声明dialog。

0