错误的窗口令牌,在创建活动之前或隐藏活动之后您将无法显示对话框 [英] Bad window token, you cannot show a dialog before an Activity is created or after it's hidden

查看:197
本文介绍了错误的窗口令牌,在创建活动之前或隐藏活动之后您将无法显示对话框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的应用程序中使用了 AppIntro库.

I am using an AppIntro library in my app.

它有3张幻灯片.当第三张幻灯片显示时,我想问用户一些问题.为此,我正在使用 afollestad的材料对话框.

It has 3 slides. I want to ask the user something when the third slide is shown. To achieve that I am using material dialogs by afollestad.

我在AppIntro活动中的代码如下:

My code in the AppIntro Activity looks like that:

@Override
    public void onNextPressed() {
        if(this.pager.getCurrentItem() == 2) {
            MaterialDialog dialog = new MaterialDialog.Builder(getApplicationContext())
                    .title("QR Code scannen")
                    .content("Möchtest du den QR Code scannen oder selbst eingeben?")
                    .positiveText("eingeben")
                    .negativeText("scannen")
                    .onPositive(new MaterialDialog.SingleButtonCallback() {
                        @Override
                        public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                            Intent intent = new Intent(getApplicationContext(), RegistrationActivity.class);
                            startActivity(intent);
                        }
                    })
                    .onNegative(new MaterialDialog.SingleButtonCallback() {
                        @Override
                        public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                            // TODO
                        }
                    })
                    .show();
        }
    } 

运行该应用程序,当我滑动到第三张幻灯片时,出现以下问题:

Running the App I get the following issue when I slide to the third slide:

com.afollestad.materialdialogs.MaterialDialog$DialogException: 
Bad window token, you cannot show a dialog before an Activity is created or after it's hidden.
at com.afollestad.materialdialogs.MaterialDialog.show(MaterialDialog.java:1328)
at com.afollestad.materialdialogs.MaterialDialog$Builder.show(MaterialDialog.java:1317)
at com.ads.adstimer.fragment.Registration.RegistrationActivity.onNextPressed(RegistrationActivity.java:64)
at com.github.paolorotolo.appintro.AppIntro$2.onClick(AppIntro.java:118)
at android.view.View.performClick(View.java:5204)
at android.view.View$PerformClick.run(View.java:21153)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

我不太了解这个问题. 因为AppIntro活动已经加载,我希望在显示特定片段时会显示一个对话框.

I do not really understand the problem. Because the AppIntro Activity is already loaded and I expect it to show a dialog when a specific fragment is shown.

当显示特定幻灯片时,如何实现显示对话框?

How can I achieve to show a dialog when a specific slide is shown?

推荐答案

MaterialDialog dialog = new MaterialDialog.Builder(getApplicationContext())

我想您需要在这里传递Activity实例,而不是应用程序上下文.

I suppose you need to pass the Activity instance here, not the application context.

这篇关于错误的窗口令牌,在创建活动之前或隐藏活动之后您将无法显示对话框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆