我的共享偏好有问题,但它无效。
我已经用这个很长时间了,我很沮丧为什么这不起作用。
我试图将load方法放在Oncreate中,也放在Onresume方法中,但是没有一种方法可以工作。
我想保存我的:
boolean value = stopValue,第一次使用应用程序时应该为false,将来应该从最后保存的内容加载。当我在另一个类中使用按钮时,布尔值会改变,因此我有getIntent()。getBooleanExtra();
字符串,称为日期。
Int,startkilometer。
这些是要存储的数据。
感谢您的时间。
但这是我的Main类的代码:
public class Main extends Activity{
Button bStart, bStop;
TextView tvView;
Spinner spinner1;
boolean stopValue;
int startkilometer;
String date;
SharedPreferences prefs;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bStart = (Button) findViewById(R.id.bStart);
tvView = (TextView) findViewById(R.id.tvView);
spinner1 = (Spinner) findViewById(R.id.spinner1);
date = getIntent().getStringExtra("datoen");
startkilometer = getIntent().getIntExtra("startkm", startkilometer);
stopValue = getIntent().getBooleanExtra("stopper", stopValue);
if(stopValue == false){
bStart.setText("Start");
bStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent start = new Intent("com.uniqueapps.runner.START");
startActivity(start);
}
});
}
if(stopValue){
bStart.setText("Stop");
bStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent stop = new Intent("com.uniqueapps.runner.STOP");
stop.putExtra("startkm", startkilometer);
stop.putExtra("datoen", date);
startActivity(stop);
}
});
}
KilometerSQL info = new KilometerSQL(this);
info.open();
String data = info.getData();
info.close();
tvView.setText(data);
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
prefs.getBoolean("stopper", false);
prefs.getInt("startkm", startkilometer);
prefs.getString("datoen", date);
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
Editor edit = prefs.edit();
edit.putBoolean("stopper", stopValue);
edit.putInt("startkm", startkilometer);
edit.putString("datoen", date);
edit.commit();
super.onPause();
}
答案 0 :(得分:1)
尝试在每个方法中初始化prefs变量:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
Editor edit = prefs.edit();
edit.putBoolean("stopper", stopValue);
edit.putInt("startkm", startkilometer);
edit.putString("datoen", date);
edit.commit();
以下几行无用。未采取的价值观。你如何看待价值观?
prefs.getBoolean("stopper", false);
prefs.getInt("startkm", startkilometer);
prefs.getString("datoen", date);
答案 1 :(得分:0)
试试这样:
PreferenceManager.getDefaultSharedPreferences(this)
.edit()
.putBoolean("stopper", stopValue)
.putInt(etc)
.commit()