Я определил изменение темы в настройках списка как (завышено в SettingsActivity):
<ListPreference
app:defaultValue="default"
app:entries="@array/themes_labels"
app:entryValues="@array/themes_color"
app:key="@string/Theme"
app:useSimpleSumm"theme"
app:title=aryProvider="true" />
</PreferenceCategory>
, а массивы определены как:
<resources>
<array name="themes_labels">
<item>"Default"</item>
<item>"Light"</item>
<item>"Dark"</item>
</array>
<string-array name="themes_color">
<item>"Default"</item>
<item>"Light"</item>
<item>"Dark"</item>
</string-array>
</resources>
Теперь, хотя я пытался следуйте инструкциям dark theme , я не понимал такие переменные, как configuration.uiMode
, и, следовательно, я реализовал как (в MainActivity):
@Override
protected void onCreate(Bundle savedInstanceState) {
if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.Q) {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);
} else{
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY);
}
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
String theme = sharedPref.getString("theme", "Default");
// Toast.makeText(this, theme, Toast.LENGTH_LONG).show();
if (theme.equals("Dark")){
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
}else if (theme.equals("Light")){
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
} else{
if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.Q) {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);
} else{
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY);
}
}
super.onCreate(savedInstanceState);
mContext = getApplicationContext();
Bundle bundle = new Bundle();
Хотя это нормально работает на эмуляторе , в моем реальном устройстве, он резко падает. Но, поскольку у меня нет никакого способа увидеть, что происходит, у меня нет никакой подсказки.
Может ли кто-нибудь любезно помочь?