Android 片段setRetainInstance(真)不工作
我有一个活动,其中包含许多片段,这些片段根据导航抽屉中选定的项目进行交换。我试图通过在片段上调用setRetainInstancetrue,然后检查onCreate中是否存在该片段,从而在方向更改中保留当前片段。。。。但是,当我尝试在onCreate上获取片段时,该片段总是空的。。。。为了这个,我已经用头撞桌子好几个小时了。有人能发现问题吗 活动的相关部分 在每个片段类中使用setRetainInstanceTrueT 或Android 片段setRetainInstance(真)不工作,android,android-fragments,Android,Android Fragments,我有一个活动,其中包含许多片段,这些片段根据导航抽屉中选定的项目进行交换。我试图通过在片段上调用setRetainInstancetrue,然后检查onCreate中是否存在该片段,从而在方向更改中保留当前片段。。。。但是,当我尝试在onCreate上获取片段时,该片段总是空的。。。。为了这个,我已经用头撞桌子好几个小时了。有人能发现问题吗 活动的相关部分 在每个片段类中使用setRetainInstanceTrueT 或 对不起,我也应该发布那个代码。除了在我的活动中构建片段时,我已经这样做了
对不起,我也应该发布那个代码。除了在我的活动中构建片段时,我已经这样做了。
public class StartActivity {
private static final String MAIN_FRAGMENT_TAG = "mainFragment";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
...
if(savedInstanceState != null) {
Fragment f = getSupportFragmentManager().findFragmentByTag(MAIN_FRAGMENT_TAG);
if(f == null) {
// FRAGMENT IS ALWAYS NULL
switchToModeForPosition(...);
} else {
setupActionBarForPosition(...);
}
} else {
// Default to events view
switchToModeForPosition(0);
}
}
private void switchToModeForPosition(int position) {
Fragment fragment;
switch (position) {
default:
case 0: //events
fragment = new EventsByWeekFragment();
setupActionBarForEvents();
break;
case 1: //teams
fragment = new AllTeamsListFragment();
setupActionBarForTeams();
break;
case 2: //insights
fragment = new InsightsFragment();
setupActionBarForInsights();
break;
case 3:
startActivity(new Intent(this, SettingsActivity.class));
mDrawerLayout.closeDrawer(mDrawerList);
return;
}
fragment.setRetainInstance(true);
getSupportFragmentManager().beginTransaction().replace(R.id.container, fragment, MAIN_FRAGMENT_TAG).commit();
}
}
public void onCreated(Bundle savedInstanceState)
{
super.onCreated(savedInstanceState);
setRetainInstance(true);
}
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
setRetainInstance(true);
}