public void beginTransaction(ID id, Bundle bundle) {
Fragment fragment = getFragmentItem(id);
// In case this activity was started with special instructions from an Intent,
// pass the Intent's extras to the fragment as arguments
fragment.setArguments(bundle);
// Add the fragment to the 'fragment_container' FrameLayout
fragmentManager.beginTransaction()
.add(R.id.fragment_container, fragment).commitAllowingStateLoss();
}
java.lang.IllegalStateException:在onSaveInstanceState e/androidRuntime(9008):at android.support.v4.app.fragmentManagerImpl.checkStateLoss(fragmentManager.java:1354)e/androidRuntime(9008):at android.support.v4.app.fragmentManagerImpl.enQueueAction(fragmentManager.java:1372)之后无法执行此操作
所以为了避免它,我跟踪https://stackoverflow.com/a/10261438/2624806,它开始给我
java.lang.IllegalStateException:活动已被销毁E/AndroidRuntime(9235):at Android.support.v4.app.fragmentManagerImpl.enQueueAction(FragmentManager.java:1376)E/AndroidRuntime(9235):at Android.support.v4.app.BackStackRecord.CommitInternal(BackStackRecord.java:595)
任何建议我在这里遗漏了什么。
得到了它,我得到了解决方案…这是错误发生在事务中添加片段。我使用。add来代替use.replace(这是我不维护堆栈的要求),并使用commitAllowTransaction来提交它。我也阅读了http://www.androiddesignpatterns.com/2013/08/fragment-transaction-commit-state-loss.html,似乎我所做的可能代价很高,但对于普通的片段事务,提到解决办法是很好的。
由于声誉较低,我无法对你的问题发表评论。我假设这是您更改片段的公共方法。
public void beginTransaction(ID id, Bundle bundle)
在此方法中,每次将片段添加到活动中。因此,如果您第一次添加片段,这将很好地工作,但在第二个片段的情况下,您应该使用替换而不是添加
fragmentManager.beginTransaction()
.replace(R.id.fragment_container, fragment).commitAllowingStateLoss();
我想做了这件事之后你就不应该面对这个问题了。或者可以对第一个和第二个片段都使用'replace'。我希望这能帮到你。
问题内容: 我从市场上的应用程序中获取用户报告,但出现以下异常: 显然,它与FragmentManager有关,我不使用。stacktrace不显示我自己的任何类,因此我不知道发生此异常的位置以及如何防止它。 作为记录:我有一个tabhost,在每个选项卡中都有一个ActivityGroup在Activity之间切换。 问题答案: 基本上我只需要: 不要在方法上进行调用。这太糟了… 这是支持包中的
问题内容: 我是Android开发的新手。我有一个问题。我尝试了最后几个小时,但我无法弄清楚。如果是这样,我有一个很普遍的问题。IllegalStateException:使用ViewPager在onSaveInstanceState之后无法执行此操作,但由于缺少Android开发经验而失败。 这是代码: 这是错误: 位于android.os.Handler.dispatchMessage(Han
问题内容: Android中的异步回调 试图在Android上以可靠的方式执行异步操作是不必要的麻烦,即AsyncTask确实在概念上存在缺陷吗?还是我只是缺少一些东西? 现在,一切都在引入片段之前。随着Fragments的引入,onRetainNonConfigurationInstance()已被弃用。因此,最新的Google宽容黑客手段是使用永久性的非UI片段,该片段会在配置发生变化(例如,
我是Android开发的新手。我有个问题。我试了几个小时,但我想不出来。如果是这样的话,我有一个很受欢迎的问题。IllegalStateException:在使用ViewPager onSaveInstanceState之后无法执行此操作,但由于缺乏Android开发经验而失败。 下面是代码:
我在下面的manager.popbackbackstack行中遇到此错误。有办法解决这个问题吗?事情发生得很顺利。 致命异常:java.lang.IllegalStateException:在android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:2044)在android.support.v4.