共享偏好不会保存

时间:2013-09-30 19:32:12

标签: android eclipse boolean sharedpreferences

我的共享偏好有问题,但它无效。

我已经用这个很长时间了,我很沮丧为什么这不起作用。

我试图将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();
}

2 个答案:

答案 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()