我疯了,在我的项目中保存一组复选框的状态。 想象一组8复选框,用户必须检查或不记住类似集合的东西。 这就是我所取得的成就......但几乎没有用。我粘贴了班级的所有代码。 对不起,如果我没有使用好代码块..我真的不明白如何.. 谢谢。
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);
}
}
答案 0 :(得分:0)
那么你在哪里调用savePreferencesData()
方法?
哪个是editor.commit()?
答案 1 :(得分:0)
您需要致电editor.commit()
,以便您实际所做的任何更改都会发生。
在putBoolean
之后执行此操作,它应该有效。