【发布时间】:2017-10-23 07:18:36
【问题描述】:
我有片段容器活动,我根据操作替换片段。在一个片段中,我提供了更改应用程序原色的选项。因此用户可以更改工具栏和其他组件的颜色。 但是在应用主题后,我重新创建了活动,因此基本活动中的工具栏也使用新的颜色代码重新初始化。
现在我的问题是我的应用程序序列是这样的 设置 > 用户设置 > 主题设置
所以当用户更改主题时,我想在重新创建后再次显示相同的片段。 我也看到了其他问题并应用了逻辑,但对我不起作用。
更改主题的代码
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();
请大家帮忙。我没有太多经验,甚至没有新的开发人员。
【问题讨论】:
-
您能否展示一下您是如何处理代码中的片段的
-
更换主题后是否再次调用父活动?
-
@PratikVyas 你的意思是我如何打开片段?
-
@Himanshuarora 是的,在我重新创建任务生成器之前的所有活动中更改主题。
-
是的,也分享该代码,以便人们可以看到您在做什么并可以帮助您
标签: android android-fragments recreate