4

我有许多片段作为选项卡附加到 Android 操作栏。我可以毫无问题地在它们之间切换。但是,如果其中一个片段具有TextView(例如),并且我更改了 thatTextView的文本,则如果我切换到另一个选项卡并返回,则不会保留新文本。

我已经尝试过覆盖onSaveInstanceState(),但是当我切换选项卡时,它似乎没有被调用,因为savedInstanceState每次nullonActivityCreated()被调用(即每次重新打开该选项卡时)。

我研究了改变onPause()它调用的方法onSaveInstanceState(),但onPause()无法访问状态包,所以我不知道该怎么做。

在选项卡之间来回切换时,在选项卡中保持状态的最佳方法是什么?

4

1 回答 1

10

当您在片段之间切换时,不要分离片段只是隐藏。例子:

@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);

}
于 2013-02-19T18:59:26.337 回答