在重新启动Android应用程序后保存数据并使用它

时间:2013-08-20 17:22:35

标签: java android eclipse savestate

我正在创建一个简单的应用,用户可以在其中更改搜索栏值。将默认值设置为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但无法恢复到以前的状态。 请帮忙

先谢谢。

3 个答案:

答案 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数据库,即使应用程序关闭并重新打开,数据库也可用