2017-07-17 10 views
0

ボタンのクリックでアプリケーションテーマを変更するクラスファイルがあり、MainActivityがテーマを選択したままにするときにテーマを変更するはずです。スイッチを使用してAppThemeの変更を保持する

テーマは、暗いテーマが適用されているアプリを再起動した後にデフォルトのライトテーマにリセットされます(暗いテーマと明るいテーマのオプションがあります)。

誰かが自分のコードを見たり、ちょうど何かを提案してもらえますか?何か助けていただければ幸いです。

public class themeUtils { 
    private static int cTheme; 
    public final static int DARK = 1; 
    public final static int LIGHT = 0; 

    public static void changeToTheme(Activity activity, int theme) 
    { 
     cTheme = theme; 
     activity.finish(); 
     activity.startActivity(new Intent(activity, activity.getClass())); 
    } 

    public static void onActivityCreateSetTheme(Activity activity) 
    { 
     switch (cTheme) 
     { 
      default: 
      case LIGHT: 
       activity.setTheme(R.style.AppTheme_NoActionBar); 
       break; 
      case DARK: 
       activity.setTheme(R.style.AppTheme_NoActionBar_Dark); 
       break; 
     } 
    } 
} 

、以前に選択したテーマを保持することになっているMainActivity起動時にライン。テーマ

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    int title = getArguments().getInt("title"); 

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    return builder 
      .setTitle("Theme") 
      .setNegativeButton("Dark", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface arg0, int arg1) { 
        themeUtils.changeToTheme(getActivity(), themeUtils.DARK); 
       } 
      }) 
      .setPositiveButton("Light", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface arg0, int arg1) { 
        themeUtils.changeToTheme(getActivity(), themeUtils.LIGHT); 
       } 
      }) 
      .create(); 
     } 
    } 
+0

sharedPreferenceでアクティブなテーマを保存してonCreateに適用することができます – Berkay92

+0

助けてくれてありがとうございます@ Berkay92 –

答えて

0

を設定する

themeUtils.onActivityCreateSetTheme(this); 

ボタンだけのテーマを保存するためsharedPreferenceを使用しました。

関連する問題