2016-02-27 24 views
0

我可以使用Spinner not saving as Shared/Saved Preference将一个纺纱器保存为共享首选项。两个链接的纺纱器不保存为共享首选项

但是,我需要多个spinners相互链接,我有问题,当我尝试保存它们,我不知道为什么。

下面是我的纺纱人员如何链接。第一个微调器在被选中时启用第二微调器。

spinner = (Spinner)findViewById(R.id.spnMondayExercise); 
    adapter = ArrayAdapter.createFromResource(this, R.array.Exercise, android.R.layout.simple_spinner_dropdown_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner.setAdapter(adapter); 

    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 



     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, 
       int position, long id) { 
      long item = parent.getItemIdAtPosition(position); 
      if (item == 0){ 
       monExc = 0; 
       spinner = (Spinner)findViewById(R.id.spnMondayDuration); 
       adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
       spinner.setAdapter(adapter); 
       spinner.setEnabled(false); 
      } 

这是将成为通过上述微调

//Monday Duration 
    spinner = (Spinner)findViewById(R.id.spnMondayDuration); 
    adapter = ArrayAdapter.createFromResource(this, R.array.Duration, android.R.layout.simple_spinner_dropdown_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner.setAdapter(adapter); 
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 



     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, 
       int position, long id) { 
      long item = parent.getItemIdAtPosition(position); 
      if (item == 0){ 
       monDur = 0; 
      } 
      else if (item ==1) 
      { 
       monDur = .16; 
      } 
      else if (item ==2) 
      { 
       monDur = .33; 
      } 

这里启用了其他的微调是我loadData

private void loadData() { 
SharedPreferences prefs = getPreferences(0); 


    spnMondayDuration.setSelection(prefs.getInt("spnMonDur", 0)); 
    spnMondayExercise.setSelection(prefs.getInt("spnMonExc", 0)); 

这是我现在的储蓄prefernces:

SharedPreferences.Editor editor = getPreferences(0).edit(); 

       int spnMonDur1 = spnMondayDuration.getSelectedItemPosition(); 
       int spnMonExc1 = spnMondayExercise.getSelectedItemPosition(); 

       editor.putInt("spnMonDur", spnMonDur1); 
       editor.putInt("spnMonExc", spnMonExc1); 
       editor.commit(); 
+0

这是一个很难理解你想...你能解释一下你的行为吗? – CaptJak

回答

0

如果两个旋转的代码ners是在同一个班,比你完全搞乱spinneradapter属性。为什么不为不同的纺纱器和两个不同的适配器创建两个变量?

您的第一个微调器的onItemSelected()方法是错误的。首先你将变量指向第二个微调器,为它设置一个适配器,最后禁用它 - 我真的不知道你背后的意图是什么。你想重复使用相同的Spinner并用不同的数据填充它(因此意义不同),或者你有两个单独的Spinner视图?

假设你有两个不同的Spinner S,我会做这样的事情(代码仍然不够清晰,但是用它作为一个起点):

// initialize Exercise spinner 
spinnerExercise = (Spinner)findViewById(R.id.spnMondayExercise); 
adapterExercise = ArrayAdapter.createFromResource(this, R.array.Exercise, android.R.layout.simple_spinner_dropdown_item); 
     adapterExercise.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
spinnerExercise.setAdapter(adapterExercise); 

// initialize Duration spinner 
spinnerDuration = (Spinner)findViewById(R.id.spnMondayDuration); 
adapterDuration = ArrayAdapter.createFromResource(this, R.array.Duration, android.R.layout.simple_spinner_dropdown_item); 
adapterDuration.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
spinnerDuration.setAdapter(adapterDuration); 

// disable by default until an exercise is selected 
spinnerDuration.setEnabled(false); 


spinnerExercise.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 

    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, position, long id) { 
     long item = parent.getItemIdAtPosition(position); 
     if (item == 0){ 
      monExc = 0; 
      spinnerDuration.setEnabled(true); 
     } 
     ........ 
    } 
} 

spinnerDuration.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 

    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
     long item = parent.getItemIdAtPosition(position); 
     if (item == 0){ 
      monDur = 0; 
     } 
     else if (item ==1) 
     { 
      monDur = .16; 
     } 
     else if (item ==2) 
     { 
      monDur = .33; 
     } 
     ...... 
    } 
} 
+0

谢谢,我明白我现在要去哪里错了!谢谢你的帮助 :) – Coco12