所谓偏好设定,就是在你下次再次使用时,我们可以设定保存上次玩家输入的数值,例如可以保存游戏的最高分。
废话不多说,上代码
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
field_height = (EditText) findViewById(R.id.height);
field_weight = (EditText) findViewById(R.id.weight);
readData();
Button button = (Button) findViewById(R.id.submit);
button.setOnClickListener(calcBMI);
}
//恢复数据
private void readData () {
SharedPreferences settings = getSharedPreferences("PERF_DATA", 0);
String pref_height = settings.getString("height", "0");
if(!pref_height.equals("==")) {
field_height.setText(pref_height);
}
String pref_weight = settings.getString("weight", "0");
field_weight.setText(pref_weight);
}
// 存储数据
private void restoreData() {
SharedPreferences settings = getSharedPreferences("PERF_DATA", 0 );
settings.edit().putString("height", field_height.getText().toString())
.putString("weight", field_weight.getText().toString())
.commit();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
restoreData();
}
知道为什么,要在onPause中调用保存数据函数么,而不写onStop么,据我所知,onPause在正常和非正常退出时,都会调用的。
欢迎探讨。