我有片段容器活动,我根据操作替换片段。在一个片段中,我提供了更改应用程序原色的选项。因此用户可以更改工具栏和其他组件的颜色。但是在应用主题后,我重新创建了活动,因此基本活动中的工具栏也使用新的颜色代码重新初始化。
现在我的问题是我的应用程序序列就像这样 设置>用户设置>主题设置
因此,当用户更改主题时,我想在重新创建后再次显示相同的片段。我也看到了其他问题和应用逻辑,但对我不起作用。
更改主题的代码
private void setThemePreference(String primary, String primaryDark, String text) {
int requiredLength = 0;
if (primary.length() < 6) {
requiredLength = 6 - primary.length();
for (int i = 0; i < requiredLength; i++) {
primary = "0" + primary;
}
}
if (primaryDark.length() < 6) {
requiredLength = 6 - primaryDark.length();
for (int i = 0; i < requiredLength; i++) {
primaryDark = "0" + primaryDark;
}
}
if (text.length() < 6) {
requiredLength = 6 - text.length();
for (int i = 0; i < requiredLength; i++) {
text = "0" + text;
}
}
UserPreferenceManager.preferencePutString(
AppConstants.SharedPreferenceKeys.PrimaryColor,primary);
UserPreferenceManager.preferencePutString(
AppConstants.SharedPreferenceKeys.PrimaryDarkColor, primaryDark);
UserPreferenceManager.preferencePutString(
AppConstants.SharedPreferenceKeys.PrimaryTextColor, text);
UserPreferenceManager.preferencePutBoolean(
AppConstants.SharedPreferenceKeys.IS_ThemeChanged, true);
TaskStackBuilder.create(getActivity())
.addNextIntent(new Intent(getActivity(), MainActivity.class))
.addNextIntent(getActivity().getIntent())
.startActivities();
// applied this also
//getActivity().recreate();
getActivity().overridePendingTransition(0, 0);
}
打开主题片段的代码
getActivity().getSupportFragmentManager()
.beginTransaction()
.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left)
.addToBackStack(TAG)
.replace(R.id.container, fragment)
.commit();
请各位帮忙。我没有太多经验,甚至没有新的开发人员。