主要活动,
private void navigateTo(int position) {
Log.v(TAG, "List View Item: " + position);
switch(position) {
case 0:
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.content_frame, new Home(), Home.TAG).commit();
break;
case 1:
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.content_frame,
TabbedActivity.newInstance(),
TabbedActivity.TAG).commit();
break;
case 2:
getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, History.newInstance(), History.TAG).commit();
}
}
当我通过导航抽屉(基于上面的方法)导航到我的主片段时,它每次都运行onCreate方法。根据我的理解,当您在屏幕之间通过导航抽屉导航时,片段周期应该运行oncreateview而不是oncreate方法(因为onpause> oncreateview)。任何人都可以为我提供一个解决方案,可以确保onCreate只运行一次吗?
答案 0 :(得分:2)
每次拨打navigateTo
时都会创建新实例。
你应该这样做......
FragmentManager fragManager = getSupportFragmentManager();
// try to find an existing instance
Fragment frag = fragManager.findFragmentByTag(Home.TAG);
if (frag == null) {
// if none were found, create it
frag = new Home();
}
fragManager.beginTransaction().replace(R.id.content_frame, frag, Home.TAG).commit();