-1

我正在创建一个非常简单的应用程序,它只有一个用户可以使用的搜索栏。我的代码如下所示:

    @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    int number=50;
    SeekBar sb = (SeekBar)findViewById(R.id.slider);
    sb.setMax(100);
    sb.setProgress(number);
    sb.setOnSeekBarChangeListener(this);
}

@Override
public void onProgressChanged(SeekBar v, int progress, boolean isUser) {
    TextView tv = (TextView)findViewById(R.id.percent);
    tv.setText(Integer.toString(progress)+"%");


}

我想要做的是存储搜索栏状态,当应用程序被杀死并且用户再次打开它时,最后一次更改显示在搜索栏上,而不是默认值。所以我必须在我的 int number 变量上使用共享首选项?我不明白我怎么能做到这一点,因为当应用程序再次启动时,该行将int number=50再次运行,因此值将再次变为 50。

4

4 回答 4

1

StackOverflow 不是你的研究助理。您要完成的任务非常简单。

有关更多信息,请参阅文档

于 2012-06-07T20:06:15.317 回答
0

这可以针对您需要的任何数据类型进行修改:

private void loadSettings(){
    if(prefs == null) prefs = mContext.getSharedPreferences(PREF_KEY, 0);

    yourString = prefs.getString(YOUR_KEY, ""); 
}
private void saveSettings(){
    if(prefs == null) prefs = mContext.getSharedPreferences(PREF_KEY, 0);

    SharedPreferences.Editor prefsEd = prefs.edit();

    prefsEd.putString(YOUR_KEY, yourString);

    prefsEd.commit();
}
于 2012-06-07T20:05:14.210 回答
0

您可以使用 sharedPreference 或 savedInstanceState 来执行此操作。

查看使用 Save Instance State 保存 Android Activity 状态

当然,在那个硬编码的作业中总是做为 10 的值。如果你决定走那条路,你需要把这个值从 sharedpref 中提取出来。

于 2012-06-07T20:05:20.297 回答
0

像这样的东西应该可以工作:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    SharedPreferences sp;
    SharedPreferences.Editor spe;


    sp = PreferenceManager.getDefaultSharedPreferences(this);
    spe = sp.edit();


    int number= sp.getInt("seekNum", 50);
    SeekBar sb = (SeekBar)findViewById(R.id.slider);
    sb.setMax(100);
    sb.setProgress(number);
    sb.setOnSeekBarChangeListener(this);
}

@Override
public void onProgressChanged(SeekBar v, int progress, boolean isUser) {
    TextView tv = (TextView)findViewById(R.id.percent);
    tv.setText(Integer.toString(progress)+"%");


}


@Override
public void onStop(){
    super.onStop();

    spe.putInt("seekNum", sb.getProgress());
    spe.commit();
}
于 2012-06-07T20:08:40.543 回答