我有一个带有1个活动的应用程序,其中有3个使用ActionBar Sherlock创建的选项卡。 这些选项卡中的一个选项卡具有一个ListFragment,当选择一个项目时,ListFragment将被其他Fragment替换。

我遇到的问题是重新创建视图时(例如方向更改)。 当方向改变时,我无法解决如何保留在当前活动的片段上的问题。 例如,如果我正在查看一个Fragment,然后更改方向,它将返回到ListFragment。

我知道为什么要这样做,因为它在主要活动中调用了onCreate,但是我不知道如何取回最后一个片段。 我查看了Android开发人员页面,对它进行了无数次Google搜索,并查看了几乎所有与之相关的stackoverflow问题,但我只是不了解如何在我的应用程序中进行操作。 如果有人可以解释在重新加载视图时如何保留片段,那将是很好的。

这是我的onCreate ...

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
        // Set up navigation bar to show tabs
        final ActionBar actionBar = getSupportActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        // Add tabs to navigation bar
        actionBar.addTab(actionBar.newTab().setText("Sermons")
                .setTabListener(this));
        actionBar.addTab(actionBar.newTab().setText("Downloads")
                .setTabListener(this));
        actionBar.addTab(actionBar.newTab().setText("Contact")
                .setTabListener(this));
}

OnSaveInstanceState ...

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putInt(STATE_SELECTED_NAVIGATION_ITEM, getActionBar()
            .getSelectedNavigationIndex());
}

OnRestoreInstanceState ...

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    if (savedInstanceState.containsKey(STATE_SELECTED_NAVIGATION_ITEM)) {
        getActionBar().setSelectedNavigationItem(
                savedInstanceState.getInt(STATE_SELECTED_NAVIGATION_ITEM));
    }
}

OnTabSelected ...

@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
    String tabText = (String) tab.getText();

    if (tabText == "Audio") {
        fragment = new AudioCategoryFragment();
        getFragmentManager()
                .beginTransaction()
                .setCustomAnimations(android.R.animator.fade_in,
                        android.R.animator.fade_out)
                .replace(R.id.fragment_container, fragment).commit();
    } else if (tabText == "Downloads") {
        fragment = new DownloadsFragment();
        getFragmentManager()
                .beginTransaction()
                .setCustomAnimations(android.R.animator.fade_in,
                        android.R.animator.fade_out)
                .replace(R.id.fragment_container, fragment).commit();
    } else if (tabText == "Contact") {
        fragment = new ContactsFragment();
        getFragmentManager()
                .beginTransaction()
                .setCustomAnimations(android.R.animator.fade_in,
                        android.R.animator.fade_out)
                .replace(R.id.fragment_container, fragment).commit();
    }

}

  ask by user2144072 translate from so

本文未有回复,本站智能推荐:

关注微信公众号