package nisrulz.github.example.changethemeduringruntime; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { // Call setTheme before supper constructor and setContentView setTheme(getFlag() ? R.style.AppThemeDark : R.style.AppThemeLight); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn_change = (Button) findViewById(R.id.btn_change); btn_change.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // Flip the flag saveFlag(!getFlag()); // Restart the same activity Intent intent = new Intent(MainActivity.this, MainActivity.class); startActivity(intent); finish(); } }); } private void saveFlag(boolean flag) { SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean("dark", flag); editor.commit(); } private boolean getFlag() { SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); return preferences.getBoolean("dark", false); } }