[英]Android SharedPreferences is reset to default values. After restarting app
[英]Save the data and using it after restarting the app Android
我正在创建一个简单的应用程序,用户可以在其中更改搜寻栏的值。 将默认值设置为0,将setMax设置为5。每次关闭并重新启动应用程序时,seekbar值均设置为0。如何使用和设置在关闭应用程序之前设置的上一个seekbar值。
这是我的活动课>
public class MainActivity extends Activity {
SeekBar s;
TextView v;
public int n;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
s=(SeekBar)findViewById(R.id.seekBar1);
v=(TextView)findViewById(R.id.textView1);
next=(Button)findViewById(R.id.button1);
s.setProgress(n);
v.setText(n+" ");
s.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
// TODO Auto-generated method stub
n = progress;
v.setText(n+" ");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
v.setText(n+" ");
}
});
}
}
我尝试使用onSaveInstanceState和onRestoreInstanceState,但是无法还原回以前的状态。 请帮忙
提前致谢。
首先,仅当由于方向改变而发生销毁时,才触发onSaveInstance和onRestoreInstance方法,因此您不能为此目的使用该机制,为了在明确销毁活动之后存储先前的值,可以使用以下一种android提供的持久性机制。 SharedPreferences或SQLiteDB在销毁活动之前保存它们,并在活动开始时还原它们。
要获取最新值(如果有),必须在onCreate方法中添加以下代码:
private SharedPreferences prefs;
private int progress;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
progress = prefs.getInt("myProgress", 0);
}
//要在活动销毁之前一直存储它,则必须在onPause中添加以下代码:
protected void onPause() {
super.onPause();
Editor editPrefs = prefs.edit();
editPrefs.putInt("myProgress", newProgressValue);
editPrefs.commit();
}
希望这可以帮助。
问候!
您可能需要查看《开发人员指南》中的“存储选项”。
具体来说,“ 共享首选项”似乎是一个不错的起点。
您可以尝试使用SQL数据库,即使关闭并重新打开该应用程序,该数据库也仍然可用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.