android - 使用最后选择的 fragment 重新打开应用程序

标签 android android-fragments

抱歉我的小问题,但我现在正在搜索几个小时,如果找不到答案我会发疯的。

我正在制作一个带有一个 MainActivity 和多个 fragment 的 android studio 应用程序,但我想要的是,当用户选择 fragment 并返回时,应用程序会保存所选 fragment ,并且应用程序会在该 fragment 中重新打开,希望我能得到答案或任何帮助。请帮助我摆脱这个困境! (抱歉我的英语不好)

最佳答案

解决此问题的一种方法是使用 SharedPreferences跟踪最后可见的Fragment

例如,在您的Activity中的onStop()onSaveInstanceState(Bundle)方法,把当前的Fragment SharedPreferences 中的 ID 或标签。在你的ActivityonCreate()方法,获取Fragment的ID或标签首选项您输入的 SharedPreferences 。如果该值不为空,则将该值与您的 Fragment 进行比较使用 switch-case 的 ID 或标签,实例化Fragment ,然后添加并提交 FragmentFragmentTransaction 。否则,添加并提交您的默认首字母 Fragment .

如果您想使用 Activities 执行相同的逻辑,您可以创建启动/启动 Activity包含类似的逻辑来获取最后打开的 Activity .

在您的 AndroidManifest.xml 中文件:

<activity
    android:name=".ui.login.LaunchActivity">

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>

</activity>

onCreate()你的方法LaunchActivity类:

SharedPreferences preferences = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
String activityTag = editor.getString(getString(R.string.last_viewed_activity_tag), null);

// If the user is not launching the app for the first time, launch the last opened Activity; otherwise, launch the default initial Activity.
Class initialActivityClass;
switch (activityTag) {
    case "CoolActivity":
        initialActivityClass = CoolActivity.class;
        break;
    case "WowActivity":
        initialActivityClass = WowActivity.class;
        break;
    default:
        initialActivityClass = MainActivity.class;
        break;
}

Intent intent = new Intent(this, initialActivityClass);
startActivity(intent);
finish();

关于android - 使用最后选择的 fragment 重新打开应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36512258/

相关文章:

java - Android 相机,地理标记上的秒数四舍五入为整数

android - 从 android play 下载时,我的应用程序不支持华为媒体垫 (hws7300w)

java - 我无法从 Activity 中填充 fragment 中的回收 View

java - 如何使抽屉菜单链接到 Android Studio 中的其他 fragment

android - 折叠 AppBarLayout 不使用 TabLayout 和 NestedScrollView 滚动

即使从父类转换实际上是转换为子类的实例,也会抛出 Java Class Cast Exception

java - PopBackStack 前一个最后一个 fragment 并检查它是哪个 fragment

java - Android - 如何使用 ActionBar 在 Fragment 之间导航

android - ViewPager 的奇怪行为

android - 如何将 AsyncTaskLoader 绑定(bind)到 Fragment 的生命周期?