android-无法销毁活动:java.lang.IllegalArgumentException:找不到ID()的片段视图
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了android-无法销毁活动:java.lang.IllegalArgumentException:找不到ID()的片段视图,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3617字,纯文字阅读大概需要6分钟。
内容图文
![android-无法销毁活动:java.lang.IllegalArgumentException:找不到ID()的片段视图](/upload/InfoBanner/zyjiaocheng/663/f3003d39b4574ddd82bf40ab381d44e9.jpg)
我有一个活动YYYY(它使一个片段膨胀),该活动扩展了基本活动XXXX,又扩展了ActionBarActivity.
现在,根据某些条件,我在XXXX的onCreate()方法(在最顶部)中调用finish().
但是我在下面得到了例外.请帮我.
PS:我打电话给Return;在finish()之后;因此不会执行其余的onCreate().
07-26 16:46:26.902 14569-14569/E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to destroy activity {XXXXXXXXXXXXXX}: java.lang.IllegalArgumentException: No view found for id 0x7f0c01ec (XXXXXXXX) for fragment XXXXXXXXXXXXXX{2c85cf32 #2 id=0x7f0c01ec}
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3758)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3776)
at android.app.ActivityThread.access$1400(ActivityThread.java:148)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1346)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5312)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
Caused by: java.lang.IllegalArgumentException: No view found for id 0x7f0c01ec (XXXXXXXXXXX) for fragment XXXXXXXXXXXXXXX{2c85cf32 #2 id=0x7f0c01ec}
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:945)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1136)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1499)
at android.support.v4.app.FragmentManagerImpl.dispatchDestroy(FragmentManager.java:1963)
at android.support.v4.app.FragmentActivity.onDestroy(FragmentActivity.java:313)
at android.support.v7.app.ActionBarActivity.onDestroy(ActionBarActivity.java:166)
at XXXXXXXXXXXXXXXXXXX.onDestroy(XXXXXXXXXXXX.java:100)
at android.app.Activity.performDestroy(Activity.java:6132)
at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1163)
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3745)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3776)
at android.app.ActivityThread.access$1400(ActivityThread.java:148)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1346)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5312)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
解决方法:
好的,我发现了问题所在.第一次调用finish()可以正常工作.当应用程序被系统杀死并重新创建时,会发生此问题.如果只是重新创建的活动,则在setContentView()之后调用finish()可以正常工作.
但是,如果该活动中包含一些片段,则该特定活动被杀死时,Android也会存储这些片段的状态.但是它不会将其保存在FragmentManager中,而是将其保存在其他列表中.因此,当重新创建活动时,Android已经知道片段是什么.因此,我们不能仅仅在扩大片段之前简单地销毁它.如果这样做,我们将在onDestroy()期间获得异常
因此,调用finish()的理想位置不仅在setContentView()之后,而且在片段的onCreateView()之后.因此,我以在活动的onResume()中调用finish()作为结束.一切正常.
尽管我已经找到了解决方案,但是我似乎找不到如何清除重新创建活动时Android维护的片段历史记录列表的方法.如果可以清除该列表,则可以在onCreate()本身中调用finish().这是我仍在寻找的东西.
内容总结
以上是互联网集市为您收集整理的android-无法销毁活动:java.lang.IllegalArgumentException:找不到ID()的片段视图全部内容,希望文章能够帮你解决android-无法销毁活动:java.lang.IllegalArgumentException:找不到ID()的片段视图所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。