gpt4 book ai didi

java - 在 Activity 中显示和隐藏 SettingsFragment

转载 作者:行者123 更新时间:2023-12-01 13:07:09 25 4
gpt4 key购买 nike

所以我关注了this guide on Android Developers 。他们建议使用 fragment 向用户显示设置。

我创建了 xml 和字符串以及 fragment :

public class SettingsFragmentApp extends PreferenceFragment{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

addPreferencesFromResource(R.xml.preferences_app);
}
}

我想在我的 MainActivity 页面上显示此内容,而不创建另一个仅托管此 fragment 的 Activity (我认为谷歌推荐的后一个选项消除了这一点......为什么我应该为一个 fragment 创建另一个 Activity ?)。因此,我向 MENU 添加了一个选项,并在 MainActivity 中像这样处理它:

        //inside onOptionsItemSelected(MenuItem item)
case (R.id.action_settings_user):
getFragmentManager().beginTransaction().replace(android.R.id.content,
new SettingsFragmentUser()).commit();
return true;

这样,设置 fragment 会按预期显示,但一旦用户点击后退按钮,应用程序就会退出,因为它仍在 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 而不是 fragment 构建导航堆栈。使用 Fragments 构建导航堆栈很快就会出现问题。 Activities 应该是 Fragments 的容器。因此,在任何应用程序中,您都会有许多除了 Fragment 之外不包含任何内容的 Activities,并且这些 Activities 仅用于构建导航堆栈。在真正的大型应用程序中,我倾向于编写一个抽象的基础 Activity 来实现您需要的所有基本功能,并尽可能在 Activity 上重用它。

关于java - 在 Activity 中显示和隐藏 SettingsFragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23183864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com