1

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

提前致谢。

4

3 回答 3

2

首先,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();

}

希望这可以帮助。

问候!

于 2013-08-20T17:28:15.727 回答
1

您可能想查看开发人员指南中的存储选项。

具体来说,Shared Preferences似乎是一个不错的起点。

于 2013-08-20T17:27:42.577 回答
0

您可以尝试使用SQL数据库,即使关闭并重新打开应用程序,数据库仍然可用

于 2013-08-22T16:19:00.420 回答