错误:java.lang.IllegalArgumentException:No view found for id for&nbsp
2015-12-16 16:17
639 查看
程序中嵌套使用Fragment,实现Fragment中动态加载新的Fragment。程序初始运行时没问题,但运行中时提示:(锁屏,恢复操作。)
Caused by: java.lang.IllegalArgumentException: No view found for id 0x7f0700d8 for fragment MusicTabFragment{4238eea8 #7 id=0x7f0700d8}
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:865)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1083)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:635)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1431)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:523)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1178)
at android.app.Activity.performStart(Activity.java:5216)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2073)
... 11 more
MusicTabFragment是动态嵌入的Fragment。
解决:
Android4.2新API
当您遇到想在一个可复用的动态UI组件里放入另一个可复用的UI组件时,这个方案就非常有用。例如,如果您用ViewPager做了个可左右滑动的Fragment,并占用了大部分屏幕空间,您可以在其中的每个fragment页面中嵌入别的fragment了。 想要实现嵌套Fragment,只需在您想进行嵌入的Fragment中调用getChildFragmentManager() 方法。这样会返回一个FragmentManager,然后您就可以用和在顶层的Acitivity中嵌入fragment一样的方法进行操作了。例如,以下代码在一个现有的Fragment类中加上了另一个Fragment:
Fragment videoFragment = new VideoPlayerFragment();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(R.id.video_fragment, videoFragment).commit();
在嵌套的fragment中,您可以通过调用getParentFragment()方法来获取父fragment的引用。
Android支持库现在也加入了嵌套Fragment支持,因此在Android 1.6及更高版本上,您都可以使用嵌套fragment来进行设计。
注意:不能在fragment中导入一个包含标签的布局文件。嵌套fragment仅支持动态加入fragment。
Caused by: java.lang.IllegalArgumentException: No view found for id 0x7f0700d8 for fragment MusicTabFragment{4238eea8 #7 id=0x7f0700d8}
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:865)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1083)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:635)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1431)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:523)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1178)
at android.app.Activity.performStart(Activity.java:5216)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2073)
... 11 more
MusicTabFragment是动态嵌入的Fragment。
解决:
Android4.2新API
当您遇到想在一个可复用的动态UI组件里放入另一个可复用的UI组件时,这个方案就非常有用。例如,如果您用ViewPager做了个可左右滑动的Fragment,并占用了大部分屏幕空间,您可以在其中的每个fragment页面中嵌入别的fragment了。 想要实现嵌套Fragment,只需在您想进行嵌入的Fragment中调用getChildFragmentManager() 方法。这样会返回一个FragmentManager,然后您就可以用和在顶层的Acitivity中嵌入fragment一样的方法进行操作了。例如,以下代码在一个现有的Fragment类中加上了另一个Fragment:
Fragment videoFragment = new VideoPlayerFragment();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(R.id.video_fragment, videoFragment).commit();
在嵌套的fragment中,您可以通过调用getParentFragment()方法来获取父fragment的引用。
Android支持库现在也加入了嵌套Fragment支持,因此在Android 1.6及更高版本上,您都可以使用嵌套fragment来进行设计。
注意:不能在fragment中导入一个包含标签的布局文件。嵌套fragment仅支持动态加入fragment。
相关文章推荐
- java图形界面设计1(AWT)
- 老调重弹:JDBC系列之<驱动加载原理全面解析)
- Java设计模式—单例设计模式(Singleton Pattern)完全解析
- spring mvc常用的注解
- 在spring中读取properties配置文件里面的信息
- Eclipse连接MySQL数据库(傻瓜篇)
- JAVA实现FTP断点上传
- javaIO
- springMVC+hibernate框架搭建异常
- Spring学习笔记<二>
- spring aop通配符的各种解释
- Spring定时器的配置和使用
- Java配置
- java实现:扑克牌
- 更改MyEclipse生成的Servlet模板和Jsp模板
- Java 吸血鬼数字
- springMVC+spring+hibernate配置
- Spring 3.x 入门学习
- spring的事务嵌套
- window下java 与javac