[英]Android Spinner to change text size doesn't save state
private void onTextSizeSeekBarChange() {
final TextView tutorialText = (TextView) findViewById(R.id.tutorialText);
final SeekBar sb = (SeekBar) findViewById(R.id.seekBar);
sb.setMax(20);
sb.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
int p = 0;
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
p = progress;
tutorialText.setTextSize(p);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
if (p < 20) {
sb.setProgress(p);
}
}
});
}
所以問題是我上面的代碼更改了文本視圖的文本大小。 但是,在來回移動時不會保存狀態,因此會重置文本大小。 我真的是Android新手,不勝感激任何指導或幫助我如何實現這一目標。 我基本上有一個教程應用程序,需要從設置菜單中更改文本,該菜單有一個搜索欄,允許用戶選擇所需的文本大小。 有任何想法嗎?
您可以通過以下方式之一:1)您可以將p的值保存在共享的首選項中,下次訪問時,將檢查p的值並將其設置在textview中2)您可以將值保存在onSavedInstance中,但是問題是,當用戶從后台終止應用程序時,您將失去價值
如果已設置sb.setMax(20);
那你就不需要
if (p < 20) { sb.setProgress(p); }
代碼無用,用戶無法再查找20
你有這樣的代碼
private void onTextSizeSeekBarChange() {
final TextView tutorialText = (TextView) findViewById(R.id.tutorialText);
SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(CONTEXT);
int p = SP.getInt("key", p);
tutorialText.setTextSize(p);
final SeekBar sb = (SeekBar) findViewById(R.id.seekBar);
sb.setMax(20);
sb.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
p = progress;
tutorialText.setTextSize(p);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
sb.setProgress(p);
Editor edit = SP.edit();
edit.putInt("key", p);
edit.commit();
}
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.