[英]Showing and hiding SettingsFragment in an activity
因此,我在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?
如果要使用后退按钮功能,则必须将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
上重用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.