安卓保存复选框偏好设置

3
我正在为我的项目拼命保存一组复选框的状态。想象一组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 { // 应用程序首选项标识符 private final static String MY_PREFERENCES = "MyPref"; // 关于特定偏好的名称的常量 private final static String TEXT_DATA_KEY = "textData";
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_francia); updatePreferencesData();//加载首选项 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); }
//如何保存首选项 public void savePreferencesData(View view) { // 获取对首选项的引用 SharedPreferences prefs = getSharedPreferences(MY_PREFERENCES, Context.MODE_PRIVATE); // 获取对应的Editor SharedPreferences.Editor editor = prefs.edit(); // 用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(); } // end copied private void updatePreferencesData(){ // 读取首选项 SharedPreferences prefs = getSharedPreferences(MY_PREFERENCES, Context.MODE_PRIVATE); // 读取与TEXT_DATA属性关联的信息 Boolean textData = prefs.getBoolean(TEXT_DATA_KEY, false); // 将其设置到TextView上 CheckBox cb1 = (CheckBox) findViewById(R.id.checkBox2cfrance99); cb1.setChecked(textData); }
} ```

1
我没有看到在首选项编辑器上调用commit()的任何地方。 - S.D.
2个回答

0

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


那是因为我不理解如何正确使用它们。 - Simmons

0
你需要调用editor.commit(),这样才能真正发生任何你所做的更改。
putBoolean之后执行此操作,它应该可以工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接