Actionbar活动和片段管理器

时间:2014-11-07 21:00:26

标签: android android-fragments

我正在使用ActioBarActivity来使用appcompact v21中的新工具栏。 但是,当使用这种类型的活动时,当我用de参数addToBackStack()替换片段时,它不起作用。 当用户按下后退按钮时,角色活动将被销毁。

这是我的onCreate()

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_container);
    Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(mToolbar);
    mNavigationDrawerFragment = (NavigationDrawerFragment)
            getFragmentManager().findFragmentById(R.id.navigation_drawer);
    mTitle = getTitle();
    // Set up the drawer.
    mNavigationDrawerFragment.setUp(
            R.id.navigation_drawer,
            (DrawerLayout) findViewById(R.id.drawer_layout), mToolbar,getSupportActionBar());
    if (savedInstanceState == null){
        getFragmentManager().beginTransaction()
                .replace(R.id.container, ListaFragment.newInstance(""))
                .commit();
    }
}

这是替换片段的点击

@Override
public void helpClick(int stringResource) {
    getFragmentManager().beginTransaction()
            .replace(R.id.container, HelpFragment.newInstance(stringResource))
            .addToBackStack(null)
            .commit();
}

我不知道在使用import android.app.Fragment导入android.support.v7.app.ActionBarActivity时是否存在兼容性错误;

1 个答案:

答案 0 :(得分:1)

有同样的问题。您应该使用支持库中的类:android.support.v4.app.FragmentManagerandroid.support.v4.app.Fragment而不是默认类。

因此,您必须将getFragmentManager()替换为getSupportFragmentManager(),将import android.app.Fragment;替换为import android.support.v4.app.Fragment;

此外,您的片段应扩展android.support.v4.app.Fragment类。