我正在创建一个简单的应用,用户可以在其中更改搜索栏值。将默认值设置为0并将setMax设置为5.每次关闭并重新启动应用程序时,搜索栏值将设置为0.如何使用和设置在关闭应用程序之前设置的先前搜索栏值。
这是我的Activity类>
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但无法恢复到以前的状态。 请帮忙
先谢谢。
答案 0 :(得分:1)
首先,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();
}
希望这有帮助。
问候!
答案 1 :(得分:0)
您可能需要查看开发者指南中的存储选项。
具体来说,Shared Preferences似乎是一个很好的起点。
答案 2 :(得分:0)
您可以尝试使用SQL数据库,即使应用程序关闭并重新打开,数据库也可用