2017-01-10 7 views
2

Я развиваю игру на 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"); 

      } 
     } 
    }); 
+1

Вы можете использовать 'sharedPreferences' для хранения текущего состояния коммутатора https://developer.android.com/reference/android/content/SharedPreferences.html – Roljhon

ответ

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(); 
      } 
     }); 
+0

NICEEEE, спасибо вам! – HeartDeath

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(); 
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)); 
} 
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); 
Смежные вопросы