【问题标题】:Need Help on TabActivity在 TabActivity 上需要帮助
【发布时间】:2011-06-23 05:44:06
【问题描述】:

我完全像这样实现了一个 TabActivity -

http://blog.henriklarsentoft.com/2010/07/android-tabactivity-nested-activities/

现在的问题是,我的活动中有一些 Spinner。当我单击展开 Spinner 时 - 发生以下异常 -

android.view.WindowManager$BadTokenException: Unable to add window -- token android.app.LocalActivityManager$LocalActivityRecord@43b957c0 is not valid; is your activity running?

有人有解决办法吗?

【问题讨论】:

    标签: android tabactivity activitygroup


    【解决方案1】:

    错误可能是由于您的适配器的上下文,请尝试将 getParent() 作为适配器的上下文而不是 this。

    this 链接会帮助你。

    【讨论】:

    • 不工作。我认为创建微调器窗口时会出现问题。请尝试另一个猜测。还是谢谢。
    • 链接包含有用的内容。我还没有测试。但是有一个问题 - 只有一个微调器用于 setContentView。并且微调器是由 LayoutInflater 创建的。但我已经在 xml 中定义了布局。并通过 findViewById 获取微调器。我不知道它对我有用。但是感谢您的帮助。
    • @Shaiful 设置为内容的不是spinner,xml是使用inflater充气并设置为内容的。
    • 明白了。一切正常。感谢您的帮助。 :)
    【解决方案2】:

    问题在于,使用“正常”布局膨胀时,用于膨胀的上下文是“this”,即嵌套的 Activity。不幸的是,嵌套在选项卡(ActivityGroup)中的 Activity 不能用于显示对话框(我不确定为什么会这样,但它会产生 BadTokenException)。我发现最可口的解决方案是不使用 setContentView(int id) 而是使用 getParent() 作为上下文进行显式膨胀。像这样:

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        View contentView = LayoutInflater.from(getParent()).inflate(R.layout.my_layout, null);
        setContentView(contentView);
    }
    

    【讨论】:

      猜你喜欢
      • 2011-07-10
      • 2014-11-04
      • 1970-01-01
      • 2022-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多