Как сохранить состояние предпочтения Активность на Android

Я пытаюсь разработать приложение, которое имеет PreferenceActivity два CheckBoxPreference и MainActivity . Я хочу, чтобы, когда вы выбираете, и некоторые из них уходят в MainActivity, сохраняются, и она снова выбирает только то, что вы выбрали в первую очередь. Я перепробовал все, но ничего не получалось. Помоги мне!! Мой код:

public class Preferencias extends PreferenceActivity implements OnPreferenceChangeListener{
Boolean bmusica=true,bvibracion=true;

SharedPreferences prefs;
CheckBoxPreference chMusica,chVibr;
SharedPreferences.Editor gg;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.preferencias);

    if(savedInstanceState!=null){

        chMusica.setChecked(savedInstanceState.getBoolean("estadoMusica"));
        bmusica=savedInstanceState.getBoolean("valorMusica");
        chVibr.setChecked(savedInstanceState.getBoolean("estadoVibracion"));
        bvibracion=savedInstanceState.getBoolean("valorVibr");

    }else{


     prefs =this.getPreferenceManager().getSharedPreferences();
     gg= prefs.edit();
     chMusica = (CheckBoxPreference) findPreference("musica");
     chVibr = (CheckBoxPreference) findPreference("vibracion");
     chMusica.setChecked(true);
     chVibr.setChecked(true);
    } 


}
@Override
public boolean onPreferenceChange(Preference preference, Object value) {

    if(chMusica.isChecked()){
        gg.putBoolean("musica", true);
        bmusica=true;
    }else{
        gg.putBoolean("musica", false);
        bmusica=false;
    }
    if(chVibr.isChecked()){
        gg.putBoolean("vibracion", true);
        bvibracion=true;
    }else{
        gg.putBoolean("vibracion", false);
        bvibracion=false;
    }

    return true;
}
@Override
protected void onSaveInstanceState(Bundle outState) {

    outState.putBoolean("estadoMusica", chMusica.isChecked());
    outState.putBoolean("valorMusica", bmusica);
    outState.putBoolean("estadoVibracion", chVibr.isChecked());
    outState.putBoolean("valorVibr", bvibracion);
    super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle state) {
    super.onRestoreInstanceState(state);

    chMusica.setChecked(state.getBoolean("estadoMusica"));
    chVibr.setChecked(state.getBoolean("estadoVibracion"));
    bmusica=state.getBoolean("valorMusica");
    bvibracion=state.getBoolean("valorVibr");
}

И моя основная деятельность:

public class MainActivity extends Activity {
Button jugar, preferencias, acercade, maximo, salir;
Vibrator v;
Boolean isVibrar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_land);
    v = (Vibrator) this.getSystemService(Context.VIBRATOR_SERVICE);
    jugar = (Button) findViewById(R.id.botonJugar);
    preferencias = (Button) findViewById(R.id.botonOpciones);
    acercade = (Button) findViewById(R.id.botonAcercaDe);
    maximo = (Button) findViewById(R.id.botonPuntuaciones);
    salir = (Button) findViewById(R.id.botonSalir);
    SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
    isVibrar = sharedPref.getBoolean("vibracion", true);


public void preferencias(View view) {
    if (isVibrar==true) {
        v.vibrate(200);
    }

    Intent i = new Intent(MainActivity.this, Preferencias.class);
    startActivity(i);
}

0 ответов

Другие вопросы по тегам