我目前有两个活动,第一个,当应用程序被打开,被称为EventsActivity
,以及来自于第二个EventsActivity
叫EventActivity
。如果EventActivity
在通知过程中打开了(如果我EventsActivity
在onIntent中进行处理),则state loss
由于EventActivity
打开而发生错误。如何EventActivity
在更新我的片段之前关闭EventsActivity
。
从EventsActivity启动EventActivity
public void launchEvent() {
Intent intent = new Intent(this, EventActivity.class);
startActivity(intent);
}
基于来自EventsActivity的通知更新视图(EventActivity已打开)
@Override
public void onNewIntent (Intent intent)
{
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = manager.beginTransaction();
fragmentTransaction.replace(R.id.content_frame, new MessageFragment());
manager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); // <!-- state loss exception
fragmentTransaction.commit();
}
您需要调用super.onNewIntent(intent)
以告知FragmentManager进行Fragment事务是安全的。
@Override
public void onNewIntent (Intent intent)
{
super.onNewIntent(intent);
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = manager.beginTransaction();
fragmentTransaction.replace(R.id.content_frame, new MessageFragment());
manager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
fragmentTransaction.commit();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句