我目前正在处理一个应用程序,其中一个片段位于其片段内(主导航是NavigationDrawer)。片段' onCreate()
:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
actionBar = activity.getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
Resources r = getResources();
//(…) tabNames initialization
adapter = new CustomTabAdapter(getFragmentManager());
}
和onCreateView()
:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment, container, false);
viewPager = (ViewPager) rootView.findViewById(R.id.pager);
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(this);
for (String tabName : tabNames) {
actionBar.addTab(actionBar.newTab()
.setText(tabName)
.setTabListener(this));
}
return rootView;
}
有4个标签,每个标签都有自己的片段和布局。 CustomTabAdapter
在其getItem(int)
中返回正确片段的新实例。共有4个标签。
现在我的问题是:
onCreateView(…)
方法没有被调用。因此,在更改设备方向或选择不相邻的标签后,再次显示正确的布局。如何使其正常工作(从NavigationDrawer列表而不是空格重新输入选项卡片段时显示正确的布局)?我的想法用完了。
答案 0 :(得分:1)
最后,我找到了解决方案。我的CustomTabAdapter
是FragmentPagerAdapter
的扩展名。我将其更改为FragmentStatePageAdapter
的扩展名,现在重新创建片段。
@Louth的this answer更多细节。
答案 1 :(得分:0)
它从缓存中获取片段而不进行重新创建