I'm trying to make a switch button that toggles dark/light mode. I've managed to make it work but the only problem is that, after pressing switch button theme changes and activity flickers or activity is restarting/refreshing by it's self. After pressing switch button basically app just starts glitching out. Here's my Manifest
code:
<application
android:allowBackup="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:roundIcon="@drawable/icon"
android:supportsRtl="true"
android:theme="@style/Theme.AppCompat.DayNight.NoActionBar">
And here's my MainActivity
code:
public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
Switch dark_light;
SharedPreferences sharedPreferences = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dark_light = findViewById(R.id.dark_light);
sharedPreferences = getSharedPreferences("night", 0);
Boolean booleanValue = sharedPreferences.getBoolean("night_mode", true);
if(booleanValue){
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
dark_light.setChecked(true);
}
dark_light.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean b) {
if(b){
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
dark_light.setChecked(true);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("night_mode", true);
editor.commit();
}else{
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
dark_light.setChecked(false);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("night_mode", false);
editor.commit();
}
}
});
}
}