2

我完全像这样实现了 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?

有人有解决方案吗?

4

2 回答 2

4

问题是使用“正常”布局膨胀时,用于膨胀的上下文是“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-05-13T14:23:21.357 回答
4

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

这个链接会帮助你。

于 2011-02-08T06:09:03.437 回答