android-fragments 正在尝试使用片段保存夜间模式状态

8cdiaqws  于 2022-11-14  发布在  Android
关注(0)|答案(1)|浏览(160)

我试图在我的应用程序中启用黑夜模式,虽然工作,但当我重新启动应用程序,它再次进入光模式基本上我想保存黑夜模式状态,所以当重新启动应用程序保持在黑暗模式,一旦它被设置为黑暗模式,而不是在光模式.我的相关代码如下:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            View view= inflater.inflate(R.layout.fragment_settings, container, false);
            switchCompat= view.findViewById(R.id.switchCompat);
            sharedPreferences = getActivity().getSharedPreferences("night",0);
            Boolean booleanValue= sharedPreferences.getBoolean("night_mode",true);
            if(booleanValue){
                AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
                switchCompat.setChecked(true);
    
            }
            switchCompat.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    if(isChecked){
                        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
                        switchCompat.setChecked(true);
                        SharedPreferences.Editor editor = sharedPreferences.edit();
                        editor.putBoolean("night_mode",true);
                        editor.commit();
                    }else{
                        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
                        switchCompat.setChecked(false);
                        SharedPreferences.Editor editor = sharedPreferences.edit();
                        editor.putBoolean("night_mode",false);
                        editor.commit();
    
                    }
                }
            });
return view;

我也尝试过这个活动,但它不是保存黑暗模式的状态。

bfhwhh0e

bfhwhh0e1#

1.创建一个名为Preferences Manager的类
1.将此代码粘贴到类中
👇

public final SharedPreferences sharedPreferences;

public PreferenceManager(Context context){
    sharedPreferences=context.getSharedPreferences( "PREFS",Context.MODE_PRIVATE );
}
public void putBoolean(String key,Boolean value){
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putBoolean( key,value );
    editor.apply();
}
public Boolean getBoolean (String key,Boolean defaultValue){
    return sharedPreferences.getBoolean( key,defaultValue );
}

public void clear(){
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.clear();
    editor.apply();
}

1.然后在片段中创建一个名为preferences manager的对象,如下所示。
PreferencesManager preferencesManager = new PreferencesManager(getActivity());
1.然后像这样给它增值
如果夜间模式设置为开。
preferencesManager.putBoolean("NightMode",true);
如果夜间模式关闭
preferencesManager.putBoolean("NightMode",false);
然后检查夜间模式是否打开或关闭,请使用此代码

if (preferencesManager.getBoolean("NightMode")){
    //night mode is on ,do some magic
}else {
    //night mode is off ,do some magic
}

编辑

或者,您也可以在此处使用my library来存储数据。

相关问题