重複の可能性:
Android で実行時に現在のテーマを変更する方法
ユーザーが実行時にテーマを切り替えることができる Android アプリケーションがあります。テーマの切り替えは簡単ですが、アクティビティが再作成されるまでテーマは適用されません。テーマを現在のアクティビティに適用する方法を見つけましたが、ユーザーが戻るボタンを押した場合、前の画面にはまだ古いテーマがあります。それらの活動のテーマを変更するにはどうすればよいですか? 対応アプリ例:Tasks Free
重複の可能性:
Android で実行時に現在のテーマを変更する方法
ユーザーが実行時にテーマを切り替えることができる Android アプリケーションがあります。テーマの切り替えは簡単ですが、アクティビティが再作成されるまでテーマは適用されません。テーマを現在のアクティビティに適用する方法を見つけましたが、ユーザーが戻るボタンを押した場合、前の画面にはまだ古いテーマがあります。それらの活動のテーマを変更するにはどうすればよいですか? 対応アプリ例:Tasks Free
私が推測する単なるヒント:
finish();
通話前
setResult(AnIntegerThatNotifiesThePreviousActivitiesToChangeTheme);
すべてのアクティビティで onActivityResult を実装します
protected void onActivityResult(int request, int result, Intent data) {
if(result == AnIntegerThatNotifiesThePreviousActivitiesToChangeTheme)
{
//update the current theme
}
}
別の解決策(より良い):
テーマを保存するクラスを実装します。
public class CurrentThemeHolder {
private CurrentThemeHolder() {
}
private static instance;
public static getInstance() {
if(instance == null)
return new CurrentThemeHolder();
else
return instance;
}
private int mTheme; //identifier of the theme
public getTheme() {
return mTheme;
}
public setTheme(int newTheme){
mTheme = newTheme;
}
}
次に、すべてのアクティビティでこの ThemeActivity を拡張します。
public class ThemeActivity extends Activity {
private int mTheme;
protected void onResume() {
if(mTheme != CurrentThemeHolder.getInstance().getTheme()) {
//do what you should do to set the theme
mTheme = CurrentThemeHolder.getInstance().getTheme();
//everytime you set the theme save it
//this maybe should be done in onCreate()
}
}
}