【问题标题】:Using CheckBox value in other Activites, Android在另一个 Activity 中使用 CheckBox 值,Android
【发布时间】:2012-03-24 14:37:46
【问题描述】:

我一直在尝试在其他活动中使用/保存复选框的布尔值,但运气不佳。

我知道您必须使用 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.. 任何帮助将不胜感激!

【问题讨论】:

  • 如果要使用SharedPreferences,需要在选项菜单中再次调用Context.getSharedPreferencs(),然后再调用get(),而不是checkbox.isChecked()

标签: android checkbox sharedpreferences android-preferences


【解决方案1】:

你可以这样使用:

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

      }
  });

【讨论】:

  • 我在你的帖子上做了一个小改动,帖子号。 3 罗伯特,mgmblog.com/2008/02/18/android-checkbox-oncheckedchangelistener,我首先有这些声明,SharedPreferences myPrefs; myPrefs = this.getSharedPreferences("myprefs", MODE_WORLD_READABLE);最终编辑器 prefsEditor = myPrefs.edit(); final CheckBox checkBox = (CheckBox) findViewById(R.id.vegetarian); checkBox.setChecked(myPrefs.getBoolean("veggieBox", false));
【解决方案2】:

乍一看,您正在输入密钥is_checked,后来又尝试提取save_check_pref

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    • 1970-01-01
    • 2020-07-14
    • 2014-12-20
    • 1970-01-01
    相关资源
    最近更新 更多