当前位置: 首页 > 知识库问答 >
问题:

为什么在此代码中获取windowManager$BadTokenException?

伯俊弼
2023-03-14
public class ReviewActivity extends Activity {
     public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.reviewfrag_layout);
         mInflater = (LayoutInflater) ReviewActivity.this.getSystemService( 
                    LAYOUT_INFLATER_SERVICE); 
            ContextThemeWrapper mTheme = new ContextThemeWrapper(this, 
                    R.style.customDialog); 

            mView = mInflater.inflate(R.layout.custom_dialog, null); 
            // mDialog = new Dialog(this,0); // context, theme 

            mDialog = new Dialog(mTheme); 
            mDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
            mDialog.setContentView(this.mView); 

               //if i comment below line  code runs otherwise give exception
           mDialog.show();
        }
}

风格:

<style name="customDialog">
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowFrame">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">false</item>
    <item name="android:windowIsTranslucent">false</item>
    <item name="android:windowContentOverlay">@android:color/transparent</item>
    <item name="android:backgroundDimEnabled">false</item>

日志消息:10-10 13:20:01.184:E/AndroidRuntime(1417):致命异常:main 10-10 13:20:01.184:E/AndroidRuntime(1417):android。看法WindowManager$BadTokenException:无法添加窗口--android令牌。应用程序。本地活动管理器$LocalActivityRecord@411eeaa0无效;你的活动正在进行吗?10-1013:20:01.184:E/AndroidRuntime(1417):在android上。看法ViewRootImpl。setView(ViewRootImpl.java:585)10-1013:20:01.184:E/AndroidRuntime(1417):在android上。看法WindowManagerImpl。addView(WindowManagerImpl.java:326)10-1013:20:01.184:E/AndroidRuntime(1417):在android上。看法WindowManagerImpl。addView(WindowManagerImpl.java:224)10-1013:20:01.184:E/AndroidRuntime(1417):在android上。看法WindowManagerImpl$CompatModeWrapper。addView(WindowManagerImpl.java:149)10-1013:20:01.184:E/AndroidRuntime(1417):在android上。看法Window$LocalWindowManager。addView(Window.java:547)10-1013:20:01.184:E/AndroidRuntime(1417):在android上。应用程序。对话显示(Dialog.java:277)10-1013:20:01.184:E/AndroidRuntime(1417):在com上。mds。雷斯塔。活动复习1美元。onClick(ReviewActivity.java:74)10-1013:20:01.184:E/AndroidRuntime(1417):在android上。看法看法performClick(View.java:4084)10-1013:20:01.184:E/AndroidRuntime(1417):在android上。看法查看$PerformClick。运行(View.java:16966)10-1013:20:01.184:E/AndroidRuntime(1417):在android上运行。操作系统。处理程序。handleCallback(Handler.java:615)10-1013:20:01.184:E/AndroidRuntime(1417):在android上。操作系统。处理程序。dispatchMessage(Handler.java:92)10-1013:20:01.184:E/AndroidRuntime(1417):在android上。操作系统。活套。loop(Looper.java:137)10-1013:20:01.184:E/AndroidRuntime(1417):在android上。应用程序。活动线程。main(ActivityThread.java:4745)10-1013:20:01.184:E/AndroidRuntime(1417):在java。朗。反思。方法invokenactive(本机方法)10-1013:20:01.184:E/AndroidRuntime(1417):在java上。朗。反思。方法调用(Method.java:511)10-1013:20:01.184:E/AndroidRuntime(1417):在com上。Android内部的操作系统。ZygoteInit$MethodandArgscaler。运行(ZygoteInit.java:786)10-1013:20:01.184:E/AndroidRuntime(1417):在com上。Android内部的操作系统。合子体。main(ZygoteInit.java:553)10-1013:20:01.184:E/AndroidRuntime(1417):在dalvik。系统原生艺术。主(本机方法)

共有1个答案

孔梓
2023-03-14

这是语境问题。如果要从“活动”组中打开此“活动”,请使用以下命令,而不是使用setContentView(R.layout.xxxx):

View view ToLoad=LayoutInflater.from(get家长())。XXXX, null);this.setContentView(viewToLoad);

希望能奏效

 类似资料:
  • 问题内容: 在django.utils.tree.py中: 我不知道此代码示例中的功能。有人可以解释它的作用和用法吗? 问题答案: 是一个装饰器,包装了一个函数,您可以在类或(等效地)其实例上调用结果对象: 如您所见,无论是直接定义它还是使用装饰器语法定义它,以及在类或实例上调用它,总是会将该类作为其第一个参数。 classmethod的主要用途之一是定义 替代构造函数 : 现在,如果您子类化,则

  • 问题内容: var x int done := false go func() { x = f(…); done = true } while done == false { } 这是Go代码。我的恶魔告诉我,这是UB代码。为什么? 问题答案: Go Memory Model不保证该程序将始终遵守在goroutine中写入x的值。go常规销毁 部分中提供了一个类似的错误程序作为示例。 在本节中,G

  • 问题内容: 我编写了以下程序: 由于通道事件列表是一个缓冲通道,我想我应该获得100倍的输出“嘿!”,但是它只显示一次。我的错误在哪里? 问题答案: 更新(Go 1.2版或更高版本) 从Go 1.2开始,调度程序基于 抢先式多任务处理 原则。这意味着原始问题(以及下面提供的解决方案)中的问题不再相关。 从Go 1.2发行说明中 调度程序中的抢占 在以前的版本中,永远循环的goroutine可能会使

  • 问题内容: 在方法或类范围内,下面的行进行编译(带有警告): 在类范围中, 变量获取其默认值 ,以下给出“未定义引用”错误: 它不是第一个应该以相同的“未定义参考”错误结束吗?还是第二行应该编译?还是我缺少什么? 问题答案: tl; dr 对于 字段 ,是非法的,因为它是对的非法前向引用。您实际上可以通过编写来解决此问题,该文件可以毫无抱怨地进行编译。 对于 局部变量 ,是非法的,因为未在使用前进

  • 问题内容: 为什么这段代码不抛出?它在不使用方法的情况下修改了一段时间,这是唯一安全的删除方法。 如果将替换为,则会得到相同的结果。但是,如果我将列表更改为或只是得到了预期的异常。到底是怎么回事?我正在使用是否相关。 编辑 我找到了以下链接 http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4902078 相关部分是 天真的解决方案是将协同修改