Я сделал кнопку на моей главной панели инструментов, с помощью которой люди могут включать / выключать темный режим. Упражнение содержит нижнюю навигационную панель с фрагментами. Темный режим был реализован так:
SharedPreferences sh = getSharedPreferences("DarkMode", MODE_PRIVATE);
editor = sh.edit();
.
.
.
//switch case for the custom toggle button
switch (current) {
case LEFT:
Toast.makeText(this,currentFrag,Toast.LENGTH_SHORT).show();
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
editor.putBoolean("DarkMode",true);
editor.putString("FragName",currentFrag);
editor.commit();
recreate();
break;
case RIGHT:
Toast.makeText(this,currentFrag,Toast.LENGTH_SHORT).show();
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
editor.putBoolean("DarkMode",false);
editor.putString("FragName",currentFrag);
editor.commit();
recreate();
break;
}
И когда активность возобновляется, я меняю тему и раздуваю фрагмент в соответствии со значением в общих настройках, так что, например, если режим темный включен во фрагменте B, приложение перезапускает и раздувает фрагмент B, и если во фрагменте A отключается темный режим, приложение перезапускается и раздувает фрагмент A.
@Override
protected void onCreate(Bundle savedInstanceState) {
ModeBoolean = sh.getBoolean("DarkMode",false);
if(AppCompatDelegate.getDefaultNightMode()==AppCompatDelegate.MODE_NIGHT_YES|| ModeBoolean) {
setTheme(R.style.Sehat_style_dark);
}
else {
setTheme(R.style.Sehat_style);
}
if(sh.getString("FragName","home").equals("home")) {
fragment = new NewsHomeFragment();
changeFragment(fragment, "home");
}
else {
fragment = new StatsFragment();
changeFragment(fragment, "stats");
}
Теперь, когда приложение работает и темный режим включен / выключен в разных фрагментах, этот код работает отлично. Но когда приложение удаляется из раздела последних приложений и перезапускается, последний открытый фрагмент становится видимым. Но я хочу показать фрагмент домашней страницы при перезапуске приложения, для чего мне нужно определить, было ли приложение перезапущено. Кто-нибудь знает, как я могу это реализовать?
Вот скриншот приложения: -
App Screeenshot