SeekBar - 无法设置起点
SeekBar - Can't set starting point
当我第一次启动我的应用程序时,在创建共享首选项之前,我希望将搜索栏设置为 300 像素(最大 600)。这看起来很简单,因为我需要做的就是使用 setProgress 并给它一个 300 的值。但出于某种原因,这在我的代码中不起作用,无论我做什么,起点都保持在 0。我想知道你是否知道我做错了什么。非常感谢。
public void sizeButton(View v) {
if (v.getId() == R.id.size_btn) {
seekDialog = new Dialog(this);
seekDialog.setContentView(R.layout.size_chooser);
seekTxt = (TextView) seekDialog.findViewById(R.id.spq_txt);
seekSpq = (SeekBar) seekDialog.findViewById(R.id.size_seek);
seekSpq.setMax(600);
SharedPreferences prefs = getSharedPreferences(LauncherPage.PREFS, MODE_PRIVATE);
if (prefs != null) {
int currSize = prefs.getInt("size", size);
seekSpq.setProgress(currSize);
seekTxt.setText(Integer.toString(currSize) + " pixels");
} else {
seekSpq.setProgress(300);
}
}
明确地说 "seekSpq.setProgress(currSize);" 工作得很好。不起作用的是 "seekSpq.setProgress(300);".
我不认为SharedPreferences
可以null
。所以我不会使用它作为条件,而是使用你的 size
。像这样:
if (prefs.getInt("size", size) != null) {
...
}
else {
...
}
SharedPreferences prefs = getSharedPreferences(LauncherPage.PREFS, MODE_PRIVATE);
int currSize = prefs.getInt("size", size);
if (currSize !=0) {
seekSpq.setProgress(currSize);
seekTxt.setText(Integer.toString(currSize) + " pixels");
}else{
seekSpq.setProgress(300);
}
这也以不同的方式发生在我身上我发现我们 setProgress 的顺序很重要,例如以下在设置进度条时不起作用:
seekBar.setProgress(160);
seekBar.setMax(250);
seekBar.setMin(120);
但以下方法有效:
seekBar.setMax(250);
seekBar.setMin(120);
seekBar.setProgress(160);
当我第一次启动我的应用程序时,在创建共享首选项之前,我希望将搜索栏设置为 300 像素(最大 600)。这看起来很简单,因为我需要做的就是使用 setProgress 并给它一个 300 的值。但出于某种原因,这在我的代码中不起作用,无论我做什么,起点都保持在 0。我想知道你是否知道我做错了什么。非常感谢。
public void sizeButton(View v) {
if (v.getId() == R.id.size_btn) {
seekDialog = new Dialog(this);
seekDialog.setContentView(R.layout.size_chooser);
seekTxt = (TextView) seekDialog.findViewById(R.id.spq_txt);
seekSpq = (SeekBar) seekDialog.findViewById(R.id.size_seek);
seekSpq.setMax(600);
SharedPreferences prefs = getSharedPreferences(LauncherPage.PREFS, MODE_PRIVATE);
if (prefs != null) {
int currSize = prefs.getInt("size", size);
seekSpq.setProgress(currSize);
seekTxt.setText(Integer.toString(currSize) + " pixels");
} else {
seekSpq.setProgress(300);
}
}
明确地说 "seekSpq.setProgress(currSize);" 工作得很好。不起作用的是 "seekSpq.setProgress(300);".
我不认为SharedPreferences
可以null
。所以我不会使用它作为条件,而是使用你的 size
。像这样:
if (prefs.getInt("size", size) != null) {
...
}
else {
...
}
SharedPreferences prefs = getSharedPreferences(LauncherPage.PREFS, MODE_PRIVATE);
int currSize = prefs.getInt("size", size);
if (currSize !=0) {
seekSpq.setProgress(currSize);
seekTxt.setText(Integer.toString(currSize) + " pixels");
}else{
seekSpq.setProgress(300);
}
这也以不同的方式发生在我身上我发现我们 setProgress 的顺序很重要,例如以下在设置进度条时不起作用:
seekBar.setProgress(160);
seekBar.setMax(250);
seekBar.setMin(120);
但以下方法有效:
seekBar.setMax(250);
seekBar.setMin(120);
seekBar.setProgress(160);