Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 与NumberPicker共享数据引用_Java_Android_Sharedpreferences_Numberpicker - Fatal编程技术网

Java 与NumberPicker共享数据引用

Java 与NumberPicker共享数据引用,java,android,sharedpreferences,numberpicker,Java,Android,Sharedpreferences,Numberpicker,好的,简单地说,我正在尝试保存数据,然后从一个NumberPicker加载数据。最初使用字符串数组设置NumberPicker值,因为在使用NumberPicker setDisplayedValues()方法时,需要从中选择特定值 我没有任何问题,保存它只是当谈到加载。因为我猜我需要给出数组中该值所在位置的索引。这是我一直在尝试的,但没有用 minSpinNP.setValue(Integer.parseInt(spinValues[minSpinPos])); maxSpinNP.setVa

好的,简单地说,我正在尝试保存数据,然后从一个NumberPicker加载数据。最初使用字符串数组设置NumberPicker值,因为在使用NumberPicker setDisplayedValues()方法时,需要从中选择特定值

我没有任何问题,保存它只是当谈到加载。因为我猜我需要给出数组中该值所在位置的索引。这是我一直在尝试的,但没有用

minSpinNP.setValue(Integer.parseInt(spinValues[minSpinPos]));
maxSpinNP.setValue(Integer.parseInt(spinValues[maxSpinPos]));
Ibelieve numberPicker必须接受整数或字符串数组。 加载prefs()时,我也会遇到此错误

任何帮助都将不胜感激:)

全局变量

SeekBar switchSlider;
RadioGroup directionRadioGroup;
RadioButton fsRadioBtn;
RadioButton bsRadioBtn;
RadioButton fsBsRadioBtn;
RadioButton dirOffRadioBtn;
SeekBar corkSlider;
SeekBar spinSlider;
SeekBar grabSlider;
NumberPicker minSpinNP;
NumberPicker maxSpinNP;
Button saveBtn;

boolean safe;
int maxSpinPos;
int minSpinPos;


private int switchProbability;
private int corkProbability;
private int spinProbability;
private int grabProbability;
private int spin = 0;
private int minSpin;
private int maxSpin;
private String[] spinValues = new String[8];
添加到SpinValue的字符串

for (int i = 0; i < spinValues.length; i++) {
        String rotation = Integer.toString(spin += 180);
        spinValues[i] = rotation;
    }
在numberpicker的ChangeListener上,一些代码进行了注释,但显示了我所做的尝试

maxSpinNP.setOnValueChangedListener(new OnValueChangeListener(){

        @Override
        public void onValueChange(NumberPicker picker, int oldVal,
                int newVal) {
            // TODO Auto-generated method stub
            //maxSpin = Integer.parseInt(spinValues[maxSpinNP.getValue()]);
            //maxSpin = spinValues[maxSpinNP.getValue()];
            maxSpinPos = Arrays.asList(spinValues).indexOf(maxSpin);
            Toast.makeText(JumpSettings.this,"maxspinpos:"+ maxSpinPos,
                    Toast.LENGTH_SHORT).show();


        }

    });
调用save方法

savePrefs("MIN_SPIN_JUMPS", minSpinPos);
savePrefs("MAX_SPIN_JUMPS", maxSpinPos);
最后调用loadprefs方法,注释了更多代码

private void loadPrefs(){
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    switchProbability = prefs.getInt("SWITCH_JUMPS", 35);
    switchSlider.setProgress(switchProbability);
    corkProbability = prefs.getInt("CORK_JUMPS", 20);
    corkSlider.setProgress(corkProbability);
    spinProbability = prefs.getInt("SPIN_JUMPS", 80);
    spinSlider.setProgress(spinProbability);
    grabProbability = prefs.getInt("GRAB_JUMPS", 80);
    grabSlider.setProgress(grabProbability);
    minSpinPos = prefs.getInt("MIN_SPIN_JUMPS", 0);
    maxSpinPos = prefs.getInt("MAX_SPIN_JUMPS", 7);
    //minSpin = prefs.getString("MIN_SPIN_JUMPS", "180");
    //minSpinNP.setValue(Integer.parseInt(spinValues[minSpinPos]));
    //maxSpin = prefs.getString("MAX_SPIN_JUMPS", 1080);
    //maxSpinNP.setValue(Integer.parseInt(spinValues[maxSpinPos]));
    Log.e("min", "" + minSpinPos);
    Log.e("max", "" + maxSpinPos);
    //Log.e("prob", switchProbability + "");
}
这是228行

minSpinPos = prefs.getInt("MIN_SPIN_JUMPS", 0);

解决了。我在LoadPreferences方法中使用了这个

for( int i=0; i<spinValues.length ; i++ )
        if( spinValues[i].equals(maxSpinPos) )
             maxSpinNP.setValue(i);

for(int i=0;i您在某处使用的是字符串而不是整数,因此出现了异常。显示loadPrefs()的代码并指出哪一行是228。在哪一行生成?maxSpinNP是一个整数??请将代码添加到原始帖子中,这样会更清晰。另外,在声明spinValues的位置添加代码,哪一行是228。maxSpinNP是该numberPicker的名称
minSpinPos = prefs.getInt("MIN_SPIN_JUMPS", 0);
for( int i=0; i<spinValues.length ; i++ )
        if( spinValues[i].equals(maxSpinPos) )
             maxSpinNP.setValue(i);