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);