2016-02-27 72 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