Android自定义对话框出错

 mobiledu2502884897 发布于 2023-02-08 10:18

在我的Android应用程序中,我必须在按钮单击事件上弹出一个对话框.但是,当我点击按钮时,应用程序停止工作.我将预先设计的布局加载到对话框中.我将发布一个代码段.

Button login = (Button) findViewById(R.id.btn_login);

    login.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            final Dialog dialog = new Dialog(getApplication());

            dialog.setContentView(R.layout.journey_details);
            dialog.setTitle("Android Custom Dialog Box");

            Button dialogButton = (Button) dialog.findViewById(R.id.btn_start_jrny);

            dialogButton.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    dialog.dismiss();
                }
            });

            dialog.show();

        }
    });

它在Log cat中显示以下错误.

     E/AndroidRuntime(1412): FATAL EXCEPTION: main
 E/AndroidRuntime(1412): Process: com.xont.geotracker, PID: 1412
 E/AndroidRuntime(1412): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
 E/AndroidRuntime(1412):    at android.view.ViewRootImpl.setView(ViewRootImpl.java:538)
 E/AndroidRuntime(1412):    at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:259)
 E/AndroidRuntime(1412):    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
 E/AndroidRuntime(1412):    at android.app.Dialog.show(Dialog.java:286)
 E/AndroidRuntime(1412):    at com.xont.geotracker.Loging$1.onClick(Loging.java:61)
 E/AndroidRuntime(1412):    at android.view.View.performClick(View.java:4424)
 E/AndroidRuntime(1412):    at android.view.View$PerformClick.run(View.java:18383)
 E/AndroidRuntime(1412):    at android.os.Handler.handleCallback(Handler.java:733)
 E/AndroidRuntime(1412):    at android.os.Handler.dispatchMessage(Handler.java:95)
 E/AndroidRuntime(1412):    at android.os.Looper.loop(Looper.java:137)
 E/AndroidRuntime(1412):    at android.app.ActivityThread.main(ActivityThread.java:4998)
 E/AndroidRuntime(1412):    at java.lang.reflect.Method.invokeNative(Native Method)
 E/AndroidRuntime(1412):    at java.lang.reflect.Method.invoke(Method.java:515)
 E/AndroidRuntime(1412):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
 E/AndroidRuntime(1412):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
 E/AndroidRuntime(1412):    at dalvik.system.NativeStart.main(Native Method)

有人可以帮我弄清楚错误.需要帮忙.谢谢!

1 个回答
  • 更改

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

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

    如果你在Fragment里面,改为

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

    Dialog需要一个Context窗口标记不为空的引用.这里ApplicationContext的窗口标记为null,因为Activity它有自己的窗口

    2023-02-08 10:21 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有