EditTextPreference的文本在方向更改上变为白色

时间:2016-11-13 19:59:31

标签: android android-fragments preferencefragment

我使用SettingsActivity作为我的应用程序的首选项活动,如下所示:

public class SettingsActivity extends AppCompatActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (PreferenceManager.getDefaultSharedPreferences(this).getBoolean(getString(R.string.dark_theme_key), false)) {
            setTheme(R.style.AppThemeDark);
        } else {
            setTheme(R.style.AppThemeLight);
        }

        if (savedInstanceState == null) {
            getFragmentManager().beginTransaction()
                    .replace(android.R.id.content, new SettingsFragment())
                    .commit();
        }
    }

    public static class SettingsFragment extends PreferenceFragment {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.app_preferences);

            ...
        }
    }
}

如果我使用getActivity().recreate();(我有一个SwitchPreference用于黑暗和浅色主题。黑暗主题是Theme.AppCompat,光是相同但是.Light。如果我更改主题我使用重新创建。)或更改方向屏幕上的结果(当然是因为创造了),当我在我的轻主题上时,我遇到了一个奇怪的问题。

问题如下 - 在重新创建之后,EditTextPreference的文本内容变为白色而不是黑色。

如果我只是忽略savedInstanceState == null并且每次在SettingsActivity.onCreate上创建一个新片段,我就会失去"屏幕状态" (例如,如果我之前一直向下滚动,在重新创建之后我会滚动回到顶部。如果我之前打开了EditTextPreference,则在重新创建其关闭之后)。

我不确定如何在娱乐时恢复片段屏幕状态,或者为什么我的问题甚至会发生。非常感谢帮助。

0 个答案:

没有答案