0

我的共享首选项有问题,它不起作用。

我已经为此苦苦挣扎了很长时间,我很沮丧为什么这行不通。

我试图将加载方法放在 Oncreate 和 Onresume 方法中,但它们都没有工作。

我想保存我的:

boolean value = stopValue,这在我第一次使用应用程序时应该为 false,并且将来它应该从上次保存的内容中加载。当我在另一个类中使用按钮时,布尔值会发生变化,因此我有 getIntent().getBooleanExtra();

字符串,称为日期。

一个 Int,起始公里。

这些是要存储的数据。

谢谢你的时间。

但这是我的 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();
}
4

2 回答 2

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);
于 2013-09-30T19:55:10.787 回答
0

试试这样:

 PreferenceManager.getDefaultSharedPreferences(this)
 .edit()
 .putBoolean("stopper", stopValue)
 .putInt(etc)
 .commit()
于 2013-09-30T20:16:25.813 回答