您的位置:首页 > 其它

解决ActivityGroup的sub Activity中使用spinner出现的WindowManager$BadTokenException问题

2012-07-11 10:29 302 查看
在ActivityGroup的sub activity中直接使用Spinner会遇到下面的异常信息:

ERROR/AndroidRuntime(964): FATAL EXCEPTION: main

ERROR/AndroidRuntime(964):android.view.WindowManager$BadTokenException:
Unable to add window -- token android.app.LocalActivityManager$LocalActivityRecord@44f02d20 is not valid; is your activity running?

ERROR/AndroidRuntime(964): at android.view.ViewRoot.setView(ViewRoot.java:505)

ERROR/AndroidRuntime(964): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)

.......

程序背景:使用TabHost,需要在子界面中添加Spinner按钮。

问题:Spinner按钮不能点击,点击出现unable to add window...is your activity running?的错误。

探索:

由于点击Spinner之后,会弹出一个dropdown item的选项卡,我认为unable to add window应该是这个选项卡没有可以添加上去的activity。从错误的最后一句也能看出程序认为它需要的那个activity并没有在运行。那Spinner究竟需要哪个activity?哪个activity是当前在运行的?

思前想后,没有想明白。在网上找了些资料,有一个博客上是这么说 AlertDialog.Builder(xxx.this) => AlertDialog.Builder(this.getParent()) 。我按照这个来试了一下,不加this.getParent()会出现上面的错误,加了就没问题。由此可见当前activity应该是tabhost,而不是每个tab对应的activity。

于是把代码改成下面这样子,注意红色部分:

View views = LayoutInflater.from(getParent()).inflate(R.layout.shiji_orderplace_view_0,
null);

Spinner simple_input_5 = (Spinner) views.findViewById(R.id.simple_input_5);

String[] items= {"非连续", "连续"};

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item ,items);

adapter.setDropDownViewResource (android.R.layout.simple_spinner_dropdown_item);

simple_input_5.setAdapter(adapter);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐