Android保存复选框首选项



我要疯狂地保存我项目中的一组复选框的状态。想象一下用户必须检查或不记住像集合之类的东西的8个复选框。这就是我所取得的成就...但几乎没有Usabe。我粘贴了班级的所有代码。抱歉,如果我不充分使用代码块。.我真的不明白如何。谢谢。

 package com.example.eurocollection;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v4.app.NavUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
public class Francia extends Activity {
    // Identificatore delle preferenze dell'applicazione
    private final static String MY_PREFERENCES = "MyPref";
    // Costante relativa al nome della particolare preferenza
    private final static String TEXT_DATA_KEY = "textData";
   @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_francia);
        updatePreferencesData();//carica le preferenze
        getActionBar().setDisplayHomeAsUpEnabled(true);
    }
   @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_francia, menu);
        return true;
    }

   @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                NavUtils.navigateUpFromSameTask(this);
                return true;
        }
        return super.onOptionsItemSelected(item);
    }
    //come salvare le preferenze
    public void savePreferencesData(View view) {
        // Otteniamo il riferimento alle Preferences
        SharedPreferences prefs = getSharedPreferences(MY_PREFERENCES, Context.MODE_PRIVATE);
        // Otteniamo il corrispondente Editor
        SharedPreferences.Editor editor = prefs.edit();
        // Modifichiamo il valore con quello inserito nell'EditText
        //EditText outputView = (EditText) findViewById(R.id.inputData);
        CheckBox cb1 = (CheckBox) findViewById(R.id.checkBox2efrance99);
        cb1.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener(){
            public void onCheckedChanged(CompoundButton buttonView,
            boolean isChecked) {
                if (isChecked){
                    editor.putBoolean("MY_PREFERENCES", cb1.isChecked());
               cb1.setChecked(settings.getBoolean("MY_PREFERENCES",true));
               }
            }
            });
 updatePreferencesData();
} 
// fine copiato
private void updatePreferencesData(){
// Leggiamo le Preferences
  SharedPreferences prefs = getSharedPreferences(MY_PREFERENCES, Context.MODE_PRIVATE);
// Leggiamo l'informazione associata alla proprietà TEXT_DATA
  Boolean textData = prefs.getBoolean(TEXT_DATA_KEY, false);
// Lo impostiamo alla TextView
  CheckBox cb1 = (CheckBox) findViewById(R.id.checkBox2cfrance99);
  cb1.setChecked(textData);
}

}    
 

那么您在哪里调用savePreferencesData()方法?editor.commit()?

在哪里

您需要调用editor.commit(),以便您实际发生的任何更改。

在您的putBoolean之后进行此操作,它应该起作用。

最新更新