如何保存开关的状态

时间:2017-01-10 14:33:31

标签: android sharedpreferences

我正在Android上开发游戏,我有一个背景音乐停止了一个开关,这是在其他活动,参数。音乐在主菜单中。

我想知道如何通过从主菜单进入参数

来保存开关的状态(选中或未选中)

这是我的开关代码:

buttonmusique = (Switch) findViewById(R.id.switchMusique);
   buttonmusique.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                Log.e("bouton", String.valueOf(buttonmusique.isChecked()));
                // If the music is playing
                if (isChecked) {
                    Intent music = new Intent();
                    music.setClass(Parametres.this, BackgroundMusic.class);
                    startService(music);
                    musicBoolean = true;
                    buttonmusique.setText("Musique On");  //To change the text near to switch
                    Log.d("You are :", "Checked");
                } else {
                    Intent music = new Intent();
                    music.setClass(Parametres.this, BackgroundMusic.class);
                    stopService(music);
                    musicBoolean = false;
                    // Resume the music player
                buttonmusique.setText("Musique OFF");   //To change the text near to switch
                Log.d("You are :", " Not Checked");

            }
        }
    });

4 个答案:

答案 0 :(得分:2)

您可以将其保存在SharedPreferences

SharedPreferences prefs = getActivity().getPreferences(Context.MODE_PRIVATE);

保存声音设置

SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean(getString(R.string.sound_enabled), isChecked);
editor.commit();

要获得声音设置,请使用:

boolean soundEnabled = prefs.getBoolean(getString(R.string.sound_enabled), false);

// Set switch state
buttonmusique.setChecked(soundEnabled);

答案 1 :(得分:2)

将它放入你的创建方法中:( +适应你的情况)

final SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
CheckBox checkbox = (CheckBox) findViewById(R.id.myCheckBox);
checkbox.setChecked(sharedPreferences.getBoolean("mycheckbox", true));

checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                sharedPreferences.edit().putBoolean("mycheckbox", b).apply();
            }
        });

答案 2 :(得分:1)

加载状态:

boolean switch_status = PreferenceManager.getDefaultSharedPreferences(ctx).getBoolean("switch_status", false);

保存状态:

SharedPreferences.Editor sped = PreferenceManager.getDefaultSharedPreferences(ctx).edit();
    sped.putBoolean("switch_status", value);
    sped.commit();

答案 3 :(得分:1)

使用共享首选项或数据库来存储交换机的状态。您必须依赖Activity / fragment的生命周期方法。

以下内容可能会对您有所帮助:

......
.....
@Override
public void onClick(View v) 
{
    if (toggle.isChecked()) 
    {
        SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit();
        editor.putBoolean("state_to_save", true);
        editor.commit();
    }
    else
    {
        SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit();
        editor.putBoolean("state_to_save", false);
        editor.commit();
    }
}

最终代码:

@Override
protected void onCreate(Bundle savedInstanceState) 
{ 
 .......
    ......
    SharedPreferences sharedPrefs = getSharedPreferences("com.example.xyle", MODE_PRIVATE);
    toggle.setChecked(sharedPrefs.getBoolean("state_to_save", true));
}