从PreferenceFragment返回导航

时间:2017-01-24 09:18:33

标签: android android-fragments

我像这样处理我的后导航:

创建/提交Fragment

getSupportFragmentManager()
            .beginTransaction()
            .addToBackStack("ToDoFragment")
            .replace(R.id.content_frame, fragmentR, fragmentR.getClass().getSimpleName())
            .commit();

按下后退键时按:

@Override
public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);

    // If navigation drawer is open, close it
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
        setDrawerState(true);
        displayMenu(true);
    }
}

这适用于我的Fragments,但我希望对我的PreferenceFragment做同样的事情,我称之为:{/ p>

getFragmentManager().beginTransaction()
                .add("ToDoFragment")
                .replace(R.id.content_frame, new SettingsFragment()).commit();

但是当按下我的背部导航时。按钮它不会让我回到之前的Fragment,而是重叠我的Settings视图和之前的Fragment

我缺少什么/不理解?

编辑:

我已将getFragmentManager().popBackStackImmediate();添加到我的onBackPressed()方法,我没有任何视图重叠,但在进入我的设置并按下时,片段为空。

2 个答案:

答案 0 :(得分:0)

而不是使用'添加'在经理使用' addtoBackStack'因为add会保留现有片段并添加一个新片段,这意味着现有片段将处于活动状态。因此,不会为现有片段调用后退按钮。

public class MyForm : Form
{
    // ...


    protected override void Dispose(bool disposing)
    {
        // your code
        base.Dispose(disposing);
    }
}

答案 1 :(得分:0)

在这种情况下使用PreferenceFragment无法覆盖onBackPressed()使用onDetach()

@Override
public void onDetach() {
    super.onDetach();

    //Do your process here!

}