@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
String[] themeStrings = {"Light","Dark","System Default"};
ListView lv = requireView().findViewById(R.id.themeChangeLV);
ArrayAdapter<String> ad = new ArrayAdapter<String>(requireContext(), android.R.layout.simple_list_item_1,themeStrings);
lv.setAdapter(ad);
sharedPreferences = requireContext().getSharedPreferences("MODE", Context.MODE_PRIVATE);
nightMODE = sharedPreferences.getBoolean("night",false);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
editor = sharedPreferences.edit();
switch (i){
case 0:
new Thread(new Runnable() {
@Override
public void run() {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
editor.putBoolean(getString(R.string.night),false);
editor.putBoolean(getString(R.string.sdt),false);
editor.apply();
}
}).start();
break;
case 1:
new Thread(new Runnable() {
@Override
public void run() {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
editor.putBoolean(getString(R.string.night),true);
editor.putBoolean(getString(R.string.sdt),false);
editor.apply();
}
}).start();
break;
case 2:
editor.putBoolean(getString(R.string.sdt),true);
editor.apply();
break;
}
}
});
}
上面的代码使用了一个新的线程来更改应用主题,这样我的应用在大约半秒内不会变黑。
它在模拟器(Android 8.0)中工作,但在我的手机(Android 11)中,点击时会发生什么,应用程序停止工作?
有人能帮我这个吗?
1条答案
按热度按时间4nkexdtk1#
这也取决于开发人员选项中的移动的设置,您应该更改它们。