在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)
ERROR/AndroidRuntime(964):
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
ERROR/AndroidRuntime(964):
at android.view.Window$LocalWindowManager.addView(Window.java:424)
ERROR/AndroidRuntime(964):
at android.app.Dialog.show(Dialog.java:241)
ERROR/AndroidRuntime(964):
at android.app.AlertDialog$Builder.show(AlertDialog.java:802)
ERROR/AndroidRuntime(964):
at android.widget.Spinner.performClick(Spinner.java:257)
ERROR/AndroidRuntime(964):
at android.view.View$PerformClick.run(View.java:8816)
ERROR/AndroidRuntime(964):
at android.os.Handler.handleCallback(Handler.java:587)
ERROR/AndroidRuntime(964):
at android.os.Handler.dispatchMessage(Handler.java:92
…………………………………………
·第一,你需要在你的sub activity的oncreate方法中获得content view,而不是直接调用系统提供的setContentView(question_activity);
我的程序中代码如下:
View contentView = LayoutInflater.from(getParent().getParent()).inflate(R.layout.question_activity, null);
setContentView(contentView);
spinner = (Spinner) contentView.findViewById(R.id.spinner_a);
System.out.println(" 当前选中的spinner = "+spinner.getSelectedItem().toString());
说明:
R.layout.question_activity:是你当前Activity的布局文件。
·第二,要注意:
LayoutInflater.from(getParent().getParent())中from()的参数,是你要显示Spinner的Dialog的页面。
·我认为最主要的原因是:
Spinner的选项是以Dialog的形式显示的(上面的异常信息:at android.app.Dialog.showDialog.java)),是需要显示在总体页面之上的。
比如:
ActivityGroup1里面一个ActivityGroup2,而ActivityGroup2中有一个Activity,在这个Activity里有我们的Spinner,那么点击Spinner弹出的Dialog是显示在ActivityGroup1之上的,而不是显示在ActivityGroup2或者Activity之上的。
分享到:
相关推荐
用ActivityGroup解决TabHost中多个Activity跳转问题 参见http://hkp2008.iteye.com/blog/1185482
ActivityGroup之Activity内跳转和外跳转
ActivityGroup之activity内跳转和外跳转的源码
NULL 博文链接:https://fanhongtao.iteye.com/blog/1430893
使用ActivityGroup来切换Activity和Layout
Android开发—使用ActivityGroup来切换Activity和Layout.pdf
ActivityGroup 多个activity页面返回 子activity menu设置
Android开发—使用ActivityGroup来切换Activity和Layout
用ActivityGroup实现的activity栈,类似IOS的UINavigationController
ActivityGroup和ViewPager组合实现微信模仿,里面包含下拉刷新需要导入的包
ActivityGroup的用法,头部和底部为固定布局中间动态显示界面 并在中间布局实现手势滑动效果,自定义SlidingDrawer(抽屉)效果,在ActivityGroup里执行跳转等功能。至于在Android在ActivityGroup里执行跳转详细介绍 ...
android中tabhost和ActivityGroup的组合使用,特别是对多个Activity之间的跳转,压栈出战的管理,很有帮助。
Gallery+ActivityGroup实现滑动tab独立的Activity
Android基于ActivityGroup项目框架,此框架和tabActivity不一样,每个tab下都可以建立多个Activity。
ActivityGroup和GridView实现标签分页 ActivityGroup和GridView实现标签分页
现在的项目框架中很少用到activitygroup这种东西,谷歌也标识其为过时的产物了,但是在很多老...网上有一种方式是用将包涵edittext的activity放在最后一个加载,但这毕竟不是从根源解决问题,下面我推荐一种解决办法。
使用GridView+ActivityGroup实现的tab分页效果
ActivityGroup
为ActivityGroup能往界面上不停的添加界面,这样就能实现界面的叠加效果,但是你叠加的时候就会发现,叠加上去的界面不会显示下面的选项卡, 而且你的返回键,也不好使。这个源码就是用到TabActivity内嵌ActivityGroup...
ActivityGroup用于管理多个Activity,使得在同一个界面中展示不同内容成为可能。GridView则用于展示一组数据,以网格形式排列,方便用户快速浏览和选择。ViewFlipper则负责实现页面的切换效果,使得在不同的选项卡...