我正在开发带有片段的应用程序。它具有一个JavaScript接口,该接口在Main Activity中调用,并且具有片段替换逻辑。当应用程序在前台时,一切正常,但是当应用程序在后台时,片段事务替换不起作用。当我返回到我的应用程序时,我仍然看到旧的片段,而看不到新的片段。
@JavascriptInterface
public void beginCall(String toast) {
FragmentTransaction fTrans;
taskFragment = TaskFragment.newInstance(toast,"");
fTrans = getSupportFragmentManager().beginTransaction();
fTrans.replace(R.id.frgmCont, taskFragment);
fTrans.commit();
}
怎么了?为什么片段事务在后台不起作用?
最佳答案
一段时间后,我找到了答案:onStop之后无法执行片段事务,这将导致java.lang.IllegalStateException:onSaveInstanceState之后无法执行此操作。我没有得到该异常,因为JavascriptInterface是在单独的线程中执行的。当我强迫我的代码在主线程中运行时,出现了该错误。因此,我还需要使用一些活动生命周期方法来实现不同的逻辑,或者切换到多个活动逻辑。希望我的回答对任何人有帮助。