Java 在操作栏选项卡/片段之间切换时如何保持状态?
我在安卓操作栏上贴了很多标签。我可以毫无问题地在它们之间切换。但是,如果其中一个片段具有Java 在操作栏选项卡/片段之间切换时如何保持状态?,java,android,Java,Android,我在安卓操作栏上贴了很多标签。我可以毫无问题地在它们之间切换。但是,如果其中一个片段具有TextView(例如),并且我更改了该TextView的文本,则如果切换到另一个选项卡并返回,则不会保留新文本 我尝试过重写SaveInstanceState(),但在切换选项卡时,似乎没有调用它,因为每次调用onActivityCreated()时(即每次重新打开选项卡时),savedInstanceState都是null 我研究了如何修改onPause(),以便它调用onSaveInstanceStat
TextView
(例如),并且我更改了该TextView
的文本,则如果切换到另一个选项卡并返回,则不会保留新文本
我尝试过重写SaveInstanceState(),但在切换选项卡时,似乎没有调用它,因为每次调用onActivityCreated()
时(即每次重新打开选项卡时),savedInstanceState
都是null
我研究了如何修改onPause()
,以便它调用onSaveInstanceState()
,但是onPause()
没有访问状态包的权限,因此我不知道如何才能做到这一点
在选项卡之间来回切换时,保持选项卡状态的最佳方法是什么?在片段之间切换时,不要分离片段,而是隐藏。例如:
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
FragmentManager fm = getFragmentManager();
if(fm.findFragmentByTag(tab.getTag().toString()) == null){
ft = fm.beginTransaction();
FragmentContent contentfrag = new FragmentContent();
ft.add(R.id.framelayout, contentfrag, tab.getTag().toString());
ft.addToBackStack("BackStack" + tab.getTag().toString());
}
else{
Fragment frag = fm.findFragmentByTag(tab.getTag().toString());
ft.show(frag);
}
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
Fragment frag = this.getFragmentManager().findFragmentByTag(tab.getTag().toString());
ft.hide(frag);
}
本例中的fm是什么?FragmentManager fm=getFragmentManager();我的if(fm.findFragmentByTag(tab.getTag().toString())==null)上有一个NullPointerException。有什么想法吗?当你添加新标签时,为它设置标签。mActionBar.addTab(mActionBar.newTab().setText(“选项卡标题在此处”).setTabListener(this.setTag(“选项卡标签在此处”),true);我猜在ft.addToBackStack(…)之后还需要ft.commit()。至少对我来说这是必要的。