我已设置了ActionBar选项卡,其中包括4个选项卡。一切正常,直到我从TabbedFragment
导航离开并返回。
我是这样创建选项卡的:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final ActionBar actionBar = getActionBar();
tabs = Lists.newArrayList();
tabs.add(new TabDefinition<>("Tab 1"));
tabs.add(new TabDefinition<>("Tab 2"));
tabs.add(new TabDefinition<>("Tab 3"));
tabs.add(new TabDefinition<>("Tab 4"));
for (TabDefinition tab : tabs) {
actionBar.addTab(actionBar.newTab()
.setText(tab.text)
.setTag(tab.tag)
.setTabListener(this));
}
}
可以这样初始化适配器:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.paging_tab_container, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
viewPager = (ViewPager) view.findViewById(R.id.pager);
viewPager.setAdapter(new FragmentStatePagerAdapter(getFragmentManager()) {
@Override
public Fragment getItem(int position) {
return tabs.get(position).fragment;
}
@Override
public int getCount() {
return tabs.size();
}
});
viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
getActionBar().setSelectedNavigationItem(position);
}
});
viewPager.setCurrentItem(getActionBar().getSelectedNavigationIndex(), true);
}
当返回到TabbedFragment
时,所选的标签以及其后面一个标签将没有任何内容,只有一个空视图。但是如果我选择当前标签的下两个标签,内容就会被加载。然后返回到第一个标签时,内容将重新加载。
例如,我有A、B、C、D四个标签。在离开TabbedFragment
之前,我选择了标签A。当返回到TabbedFragment
时,我仍然停留在标签A上,但它是空的。标签B也是如此。
但是当选择标签C时,它会被创建并加载。返回到标签A时,它会被重新创建。
这里可能出了什么问题?