我像这样处理我的后导航:
创建/提交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()
方法,我没有任何视图重叠,但在进入我的设置并按下时,片段为空。
答案 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!
}