【发布时间】:2014-03-22 20:32:47
【问题描述】:
我设置了 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 选中的选项卡和旁边的 1 时不会有任何内容。只是空视图。但是如果我选择 current + 2 片段内容被加载。然后返回到第一个片段内容被重新加载。
例如,我有 A、B、C、D 选项卡。在离开 TabbedFragment 之前,我选择了选项卡 A。
返回TabbedFragment 时,我仍在选项卡A,但它是空的。标签 B 也是如此。
但选择选项卡C时,它会创建和加载。返回到选项卡 A 它被重新创建。
这可能是什么问题?
【问题讨论】:
-
片段中有 View Pager,现在 tabs 有什么用?你能提供实际的结构吗?
-
这就是全部。你还需要什么?
-
好的,非常快速的问题。您在带有 viewpager 的活动中的片段内有一个 viewpager 吗?
-
是的,Activity 有一个带有 ViewPager 的 Fragment,它显示 Fragment。
-
你是怎么解决的?
标签: android android-fragments android-tabs