在我的应用中,您可以在每个标签中使用该界面。但是当你更改标签时,则返回它不会保存。我该如何实现呢?
主要活动
ActionBar.Tab tab1, tab2;
Fragment fragmentTab1 = new FragmentTab1();
Fragment fragmentTab2 = new FragmentTab2();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start_screen);
ActionBar actionBar = getActionBar();
assert actionBar != null;
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
final ActionBar bar = getActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);
tab1 = actionBar.newTab().setText("Skate Dice");
tab2 = actionBar.newTab().setText("S.K.A.T.E");
tab1.setTabListener(new MyTabListener(fragmentTab1));
tab2.setTabListener(new MyTabListener(fragmentTab2));
actionBar.addTab(tab1);
actionBar.addTab(tab2);
标签监听器
public class MyTabListener implements ActionBar.TabListener
{
Fragment fragment;
public MyTabListener(Fragment fragment)
{
this.fragment = fragment;
}
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft)
{
ft.replace(R.id.fragment_container, fragment);
}
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft)
{
ft.remove(fragment);
}
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft)
{
// nothing done here
}
}
当用户取消选择然后返回选项卡时,如何保存选项卡的状态? 我是Android开发的新手任何建议/帮助将非常感谢谢谢!
答案 0 :(得分:0)
这些将有希望让你朝着正确的方向前进。另一个有用的项目是管理fragment life cycle。这可以使您能够在片段暂停或销毁之前对数据执行某些操作(例如保存)。
编辑: http://developer.android.com/reference/android/app/ActionBar.TabListener.html提供了一些很好的信息。不要完全删除片段,而是使用attach()和detach()方法。类似的东西:
public void onTabSelected(Tab tab, FragmentTransaction ft) {
if (fragment == null) {
ft.replace(R.id.fragment_container, fragment); // or use ft.add()
} else {
ft.attach(fragment);
}
}
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
if (mFragment != null) {
ft.detach(mFragment);
}
}
我还没有能够测试它但它应该沿着这些方向...... 很抱歉有另一个链接,但this is helpful too.
答案 1 :(得分:0)
最简单的答案 - 每个标签都需要有自己的TabListener,因此每个标签的片段都保存在TabListener实现中。