ser*_*kye 2 android android-fragments
我从我的选项菜单中启动了一些片段,例如首选片段和对话片段.
当我打开首选项片段并点击后退按钮时,整个活动将关闭.对于按照我的预期工作的对话框片段,情况并非如此.
有人可以解释为什么会发生这种情况以及可接受的处理方式是什么?:)
要启动首选项片段:
getFragmentManager().beginTransaction()
.add(android.R.id.content, new SettingsFragment())
.addToBackStack("settings")
.commit();
Run Code Online (Sandbox Code Playgroud)
有关我的答案在这里.
我对首选项片段有完全相同的问题.似乎大多数人必须放弃并使用偏好活动.
您将要遇到的第一个问题是,在启动片段时需要使用replace而不是add.该代码应该更改为如下所示:
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new SettingsFragment())
.addToBackStack("settings")
.commit();
Run Code Online (Sandbox Code Playgroud)
至于处理后退按钮,似乎"后堆栈"不会被系统后退按钮自动触发.我的解决方案是从onBackPressed覆盖手动弹出后台堆栈:
@Override
public void onBackPressed()
{
if (inSettings)
{
backFromSettingsFragment();
return;
}
super.onBackPressed();
}
Run Code Online (Sandbox Code Playgroud)
每当我导航到我的首选项片段时,我都会在活动中将inSettings boolean 设置为true以保留该状态.这是我的backFromSettingsFragment方法的样子:
private void backFromSettingsFragment()
{
inSettings = false;
getFragmentManager().popBackStack();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2748 次 |
| 最近记录: |