2015-03-07 2 views
0

У моего приложения действительно странная проблема: в PreferenceActivity я предоставляю под (Sub) PreferenceScreen ListPreference, где пользователь выбирает «светлый» или «темный». Поэтому я настроил OnPreferenceChangedListener, и когда пользователь запускает его, я воссоздаю Prefs .. Это работает. Но нажатие кнопки «Назад» отображает основное действие в старой конфигурации тем. Итак, как это сделать?Предыдущая тема показана после изменения в prefs (Activity-Stack?)

ответ

0

Нашли решение. Теперь я заканчиваю MainActivity, а в Prefs я переопределяю BackButton. Это, похоже, работает очень хорошо. Может быть, у кого-то есть другое решение. Я не совсем доволен переопределенным BackButton - в прежние времена у меня была небольшая проблема из-за этого «трюка».

themePreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { 
      @Override 
      public boolean onPreferenceChange(Preference preference, Object newValue) { 
       changetheme(); 
       return true; 
      } 
     }); 
    } 


    private void changetheme() { 
     recreate(); 
    } 


    @Override 
    public void onBackPressed() { 
     super.onBackPressed(); 
     finish(); 
     Intent backToMain = new Intent(SettingsActivity.this, MainActivity.class); 
     backToMain.putExtra("data", "test"); 
     startActivity(backToMain); 
    }