所以我跟着this guide on Android Developers。他们建议使用片段向用户显示设置。
我创建了xml和字符串以及片段:
public class SettingsFragmentApp extends PreferenceFragment{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences_app);
}
}
我想在我的MainActivity页面上显示这个,而不创建另一个只托管这个片段的活动(我认为google推荐的后来的optioon杀死了这一点......为什么我要为一个片段创建另一个活动?)。所以我在MENU
添加了一个选项,我在MainActivity
中这样处理:
//inside onOptionsItemSelected(MenuItem item)
case (R.id.action_settings_user):
getFragmentManager().beginTransaction().replace(android.R.id.content,
new SettingsFragmentUser()).commit();
return true;
这样设置片段就会按预期显示,但是一旦用户点击后退按钮,应用程序就会退出,因为它仍在MainActivity
上。
所以问题是如何处理后退按钮以保存设置更改并将用户带回MainActivity?
答案 0 :(得分:1)
如果你想要后退按钮功能,你必须在事务中将Fragment
添加到后台。
FragmentManager manger = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.flFragmentContainer, fragment);
transaction.addToBackStack(null); // Add fragment to back stack.
transaction.commit();
但不建议这样做。他们建议您使用额外Activity
的原因是您可以使用Activities
而不是片段来构建导航堆栈。使用Fragments
构建导航堆栈可能会很快出现问题。 Activities
只是Fragments
的容器。因此,在任何应用中,除了Activities
之外,您将有许多Fragment
不包含任何内容,而这些Activities
仅用于构建导航堆栈。在非常大的应用程序中,我倾向于编写一个抽象基础Activity
,它实现了您需要的所有基本功能,并尽可能在Activity
上重复使用。