主要娱乐 Activity

Recreation of Main Activity

我有一个主要的 Activity,其中包含我的应用 Fragments 的大约 90%。用户登录 activity 后,我在 Master Activity.

onCreate() 上添加主要片段

问题是当我在 SettingFragment(这是一个 PreferenceFragment)中更改应用程序的语言环境时,我必须重新创建主 Activity 等等 onCreate() 它会再次加载主要片段,这是不可取的(我想继续使用新语言进行设置)。

处理这种情况的最佳方法是什么?我想过从 FragmentManager 检查 SettingFragment 可见性,但在重新创建时它找不到 settingFragment 并且它 returns 总是空的。另一种方法可能是在 sharedPreferences 上写入以检查 MainFragment 是否已加载,但我不确定写入或读取的最佳状态是什么。

您可以将 android:configChanges="locale" 添加到您的 activity,然后在您的片段上您需要覆盖并刷新您的 UI。

@Override
public void onConfigurationChanged(Configuration newConfig) {
  // refresh your views here
  super.onConfigurationChanged(newConfig);
}