抱歉我的小问题,但我现在正在搜索几个小时,如果找不到答案我会发疯的。
我正在制作一个带有一个 MainActivity 和多个 fragment 的 android studio 应用程序,但我想要的是,当用户选择 fragment 并返回时,应用程序会保存所选 fragment ,并且应用程序会在该 fragment 中重新打开,希望我能得到答案或任何帮助。请帮助我摆脱这个困境! (抱歉我的英语不好)
最佳答案
解决此问题的一种方法是使用 SharedPreferences
跟踪最后可见的Fragment
。
例如,在您的Activity
中的onStop()
或onSaveInstanceState(Bundle)
方法,把当前的Fragment
SharedPreferences
中的 ID 或标签。在你的Activity
的onCreate()
方法,获取Fragment
的ID或标签首选项您输入的 SharedPreferences
。如果该值不为空,则将该值与您的 Fragment
进行比较使用 switch-case
的 ID 或标签,实例化Fragment
,然后添加并提交 Fragment
到 FragmentTransaction
。否则,添加并提交您的默认首字母 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/