Использование значения CheckBox в других Activites, Android - PullRequest
0 голосов
/ 24 марта 2012

Я пытался использовать / сохранить логическое значение флажка в других активах, но мне не повезло.

Я знаю, что вы должны использовать SharedPreferences, но я не могу настроить его правильно. Я сделал класс предпочтений, который имеет

    private static final String OPTION_PREF = "my.main.project";
    private SharedPreferences optionPreferences;
    private Editor optionEditor;
    private boolean checkbox;

    public Preferences(Context context)
    {
        this.optionPreferences = context.getSharedPreferences(OPTION_PREF, Activity.MODE_PRIVATE);
        this.optionEditor = optionPreferences.edit();
    }

    public boolean getChecked()
    {
        return optionPreferences.getBoolean("is_checked", checkbox);
    }
    public void saveChecked(boolean checkBox)
    {
        optionEditor.putBoolean("save_check_pref", checkBox);
        optionEditor.commit();
    }

И затем в меню параметров, например,

    boolean veggieChecked;

    super.onCreate(savedInstanceState);
    setContentView(R.layout.options);

    Preferences pref;
    pref = new Preferences(getApplicationContext());

    veggieChecked = pref.getChecked();

    final CheckBox checkBox = (CheckBox) findViewById(R.id.vegetarian);
    if(checkBox.isChecked())
        veggieChecked = true;

    pref.saveChecked(veggieChecked);

Я не могу понять, что я делаю неправильно, потому что я новичок в Android и раньше не использовал sharedpreferences .. любая помощь будет оценена!

Ответы [ 2 ]

1 голос
/ 24 марта 2012

Вы можете использовать что-то вроде этого:

CheckBox Equities = (CheckBox) findViewById(R.id.Equities);
  CheckBox FixedIncome = (CheckBox) findViewById(R.id.FixedIncome);
  CheckBox Currencies = (CheckBox) findViewById(R.id.Currencies);
  CheckBox Commodities = (CheckBox) findViewById(R.id.Commodities);
  CheckBox Derivatives = (CheckBox) findViewById(R.id.Derivatives);



    myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
    prefsEditor = myPrefs.edit();


   int prefEq = myPrefs.getInt("Equities", 0);
   int prefFI = myPrefs.getInt("FixedIncome", 0);
   int prefCu = myPrefs.getInt("Currencies", 0);
   int prefCo = myPrefs.getInt("Commodities", 0);
   int prefDe = myPrefs.getInt("Derivatives", 0);

     if(prefEq == 1)
     {
       Equities.setChecked(true);
     }
     else
     {
       Equities.setChecked(false);
     }


     if(prefFI == 1)
     {
       FixedIncome.setChecked(true);
     }
     else
     {
       FixedIncome.setChecked(false);
     }
     if(prefCu == 1)
     {
       Currencies.setChecked(true);
     }
     else
     {
       Currencies.setChecked(false);
     }
     if(prefCo == 1)
     {
       Commodities.setChecked(true);
     }
     else
     {
       Commodities.setChecked(false);
     }
     if(prefDe == 1)
     {
       Derivatives.setChecked(true);
     }
     else
     {
       Derivatives.setChecked(false);
     }






  Equities.setOnCheckedChangeListener(new OnCheckedChangeListener()
  {
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
      {
          if ( isChecked )
          {
            prefsEditor.putInt("Equities", 1); 
            prefsEditor.commit(); 
          }
          else
          {
            myArray[0] = false;
            prefsEditor.putInt("Equities", 0); 
            prefsEditor.commit(); 
          }

      }
  });


  FixedIncome.setOnCheckedChangeListener(new OnCheckedChangeListener()
  {
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
      {
          if ( isChecked )
          {

            prefsEditor.putInt("FixedIncome", 1); 
            prefsEditor.commit(); 
          }
          else
          {

            prefsEditor.putInt("FixedIncome", 0); 
            prefsEditor.commit();
          }

      }
  });


  Currencies.setOnCheckedChangeListener(new OnCheckedChangeListener()
  {
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
      {
          if ( isChecked )
          {

            prefsEditor.putInt("Currencies", 1); 
            prefsEditor.commit(); 
          }
          else
          {

            prefsEditor.putInt("Currencies", 0); 
            prefsEditor.commit();
          }

      }
  });




  Commodities.setOnCheckedChangeListener(new OnCheckedChangeListener()
  {
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
      {
          if ( isChecked )
          {

            prefsEditor.putInt("Commodities", 1); 
            prefsEditor.commit(); 
          }
          else
          {

            prefsEditor.putInt("Commodities", 0); 
            prefsEditor.commit();
          }

      }
  });


  Derivatives.setOnCheckedChangeListener(new OnCheckedChangeListener()
  {
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
      {
          if ( isChecked )
          {

            prefsEditor.putInt("Derivatives", 1); 
            prefsEditor.commit(); 
          }
          else
          {

            prefsEditor.putInt("Derivatives", 0); 
            prefsEditor.commit();
          }

      }
  });
1 голос
/ 24 марта 2012

На первый взгляд вы вводите ключ is_checked, а затем пытаетесь вытащить save_check_pref.

...