Member 13366692 Ответов: 0

Как перезапустить активность после связывания ее темой?


Черт возьми, у меня есть приложение для изменения темы между днем и ночью, оно работает нормально, но проблема в том, как применить тему сразу после нажатия кнопки, которую я использую sharedpreference, чтобы сохранить, была ли это ночь или день.
Это основная деятельность:
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    SharedPreferences sharepref= 
PreferenceManager.getDefaultSharedPreferences(this);
    Boolean swichter =sharepref.getBoolean(this.KEY_PREF_STRING,true);
    Toast.makeText(this,swichter.toString(),Toast.LENGTH_LONG).show();
    if (swichter.toString()=="false"){
        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
        Intent intent=getIntent();
        finish();
        startActivity(intent);
    }else{
        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
        Intent intent=getIntent();
        finish();
        startActivity(intent);
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    if (id == R.id.action_settings) {
        // launch settings activity
        startActivity(new Intent(MainActivity.this, SettingsActivity.class));
        return true;
    }

Настройка Activiry :
public static final String KEY_PREF_STRING="key_vibrate";

getSupportFragmentManager().beginTransaction()
            .replace(android.R.id.content,new SettingsFragment())
            .commit();


Что я уже пробовал:

Я использовал этот метод.recreate(); и Intent intent=getIntent startAcivity!

David Crow

Вы пробовали что-то похожее:

protected void onCreate(Bundle savedInstanceState) 
{
    SharedPreferences sharepref = PreferenceManager.getDefaultSharedPreferences(this);    
    Boolean swichter = sharepref.getBoolean(this.KEY_PREF_STRING,true);    
    if (swichter)
        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
    else
        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);    
}

0 Ответов