我在我的android项目中使用了light / night模式,并且在片段中使用了一个开关来更改模式。好吧,当我重新加载应用程序时,它会改变。但我想在不重新加载应用程序的情况下更改模式。我该怎么办??
更改模式后,我想保留当前片段。
aSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if(b){
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
aSwitch.setChecked(true);
sh = getActivity().getSharedPreferences("darklight",Context.MODE_PRIVATE).edit();
sh.putBoolean("is",true);
sh.commit();
}else{
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
sh = getActivity().getSharedPreferences("darklight",Context.MODE_PRIVATE).edit();
sh.putBoolean("is",false);
sh.commit();
}
}
});
答案 0 :(得分:1)
您可以通过在Android中使用 AppCompatDelegate 命令轻松地做到这一点
将其设置为False
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
设置为True
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
此外,您还可以使用切换按钮来进行模式修改和切换。
答案 1 :(得分:0)
让我们在“设置”片段中为夜间模式切换设置一个全局变量。然后,让我们在用户切换夜间模式时进行设置:
composer require laravel/ui "^1.0" --dev
AppCompatDelegate.setDefaultNightMode 上的更改将重新加载您的父/导航活动。然后,在切换夜间模式后,让我们将用户从导航活动重定向到“设置”片段:
var nightModeSwitched = false
class SettingsFragment : Fragment() {
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
nightModeButton.setOnClickListener {
nightModeSwitched = true
// Additional code to switch night mode on/off
}
}
}