与我在这里的回答有关。
我对首选项片段有完全相同的问题。似乎大多数人必须放弃并改用 Preference Activity。
您将遇到的第一个问题是在启动片段时需要使用替换而不是添加。该代码应更改为如下所示:
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new SettingsFragment())
.addToBackStack("settings")
.commit();
至于处理后退按钮,似乎“后退堆栈”是系统后退按钮不会自动触发的东西。我的解决方案是从onBackPressed覆盖中手动弹出返回堆栈:
@Override
public void onBackPressed()
{
if (inSettings)
{
backFromSettingsFragment();
return;
}
super.onBackPressed();
}
每当我导航到我的首选项片段时,我都会在活动中将 inSettings布尔值设置为 true 以保留该状态。这是我的backFromSettingsFragment方法的样子:
private void backFromSettingsFragment()
{
inSettings = false;
getFragmentManager().popBackStack();
}