私は、ユーザがPreferenceActivity
から複数の異なる色のテーマの中から選択し、それによってアプリケーション全体のテーマ/色を変更できるアプリケーションを持っています。しかし、PreferenceActivity
で選択された変更はすぐには適用されません。変更は、ユーザがのPreferenceActivity
に再入したときにのみ適用されます。アクティビティを再開せずにアンドロイドでテーマ/スタイルを適用するにはどうすればよいですか?
テーマが選択されるたびにrecreate()
と呼ぶことができますが、アクティビティ全体を再作成することなく、より良い解決策が存在するかどうかを知りたいと思います。呼ばれる
@Override
public void onCreate(Bundle savedInstanceState) {
setTheme();
themecolorList.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
switch (themecolorList.getValue()) {
case "grey":
themecolorList.getEditor().putString("grey", "green").apply();
break;
case "green":
themecolorList.getEditor().putString("green", "green").apply();
setTheme(R.style.AppTheme_default);
break;
case "blue":
themecolorList.getEditor().putString("blue", "green").apply();
break;
case "yellow":
themecolorList.getEditor().putString("yellow", "green").apply();
break;
case "red":
themecolorList.getEditor().putString("red", "green").apply();
break;
case "pink":
themecolorList.getEditor().putString("pink", "green").apply();
break;
default:
themecolorList.getEditor().putString("green", "green").apply();
break;
}
recreate();
return true;
}
});
}
方法setTheme();
:私は私のPreferenceActivityでpreferenceListから選択した値を設定する場所ですhttps://www.youtube.com/watch?v=oU8xIUi_48A
:ここ
は、現在どのように動作するかのビデオです私のPreferenceActivitys
onCreate();
メソッド private void setTheme() {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
switch (sharedPreferences.getString("THEME_KEY", "green")) {
case "grey":
setTheme(R.style.AppTheme_Grey);
break;
case "green":
setTheme(R.style.AppTheme_default);
break;
case "blue":
setTheme(R.style.AppTheme_Blue);
break;
case "yellow":
setTheme(R.style.AppTheme_Yellow);
break;
case "red":
setTheme(R.style.AppTheme_Red);
break;
case "pink":
setTheme(R.style.AppTheme_Pink);
break;
default:
getApplication().setTheme(R.style.AppTheme_default);
setTheme(R.style.AppTheme_default);
break;
}
}
に対応するテーマを設定;'ユーザーを押すたびのための新たな意図を始めるよりも、その後、より良いオプションになります先物主義者のオプションで – Muddz