我有一个PersistFragment,用于在MainActivity屏幕旋转期间保存数据,显示其他活动等。这在大多数情况下都能正常工作。我可以显示其他活动,按“返回”按钮,直到我回到我的MainActivity等,一切正常。
我在所有这些子活动上都有一个按钮,可以直接跳回到MainActivity,当我使用它时,会重新创建PersistFragment。为什么?有什么不同?如何阻止PersistFragment被释放或丢失?
以下是创建PersistFragment的代码(MainActivity,onCreate()):
super.onCreate( savedInstanceState );
FragmentManager fm = getFragmentManager();
PersistFragment persistFragment = (PersistFragment) fm.findFragmentByTag( TAG_PERSIST_FRAGMENT );
if( persistFragment == null )
{
persistFragment = new PersistFragment();
persistFragment.setRetainInstance( true );
fm.beginTransaction().add( persistFragment, TAG_PERSIST_FRAGMENT ).commit();
System.out.printf( "Created new Fragment!\n" );
}
这是onClick处理程序,它将我带回MainActivity:
public void onClick( View v )
{
Intent intent = new Intent( TVActivity.this, MainActivity.class );
intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP );
startActivity( intent );
}
我看到调试“Created new Fragment!”所以看起来PersistFragment已经以某种方式发布了。
答案 0 :(得分:1)
尝试在if语句中将persistFragment更改为savedInstanceState