我正在创建一个非常简单的应用程序,它只有一个用户可以使用的搜索栏。 我的代码如下所示:
@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数字变量上使用共享首选项?我无法理解我是如何做到的,因为当应用程序再次启动时,行int number=50
将再次运行,因此值将再次变为50。
答案 0 :(得分:1)
StackOverflow不是您的研究助手。您尝试实现的任务是荒谬简单。
有关详细信息,请参阅documentation。
答案 1 :(得分: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();
}
答案 2 :(得分:0)
您可以使用sharedPreference或savedInstanceState执行此操作。
查看Saving Android Activity state using Save Instance State
当然,在硬编码分配中总是做10的值。如果你决定走那条路,你需要把我们的共同预测值拉出来。
答案 3 :(得分: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();
}