2013-01-13 51 views
1

我無法檢索微調器的選定值。有人能幫助我嗎?謝謝。微調:使用Android中的共享首選項存儲和檢索值

這是我如何檢索數據。它在onCreate()方法中。

mPrefs = getSharedPreferences(PREFS_NAME, MODE_PRIVATE); 
SpinnerLang.setSelection(mPrefs.getInt(PREF_SPINNER, 0)); 

然後我將Spinner的值保存在一個按鈕中,所以當用戶從Spinner中選擇並單擊按鈕時,所選值將被保存。

//Listening to button event 
btnDone.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
    Editor e = mPrefs.edit(); 
    int Spinnervalue = SpinnerLang.getSelectedItemPosition(); 
    e.putInt("PREF_SPINNER", Spinnervalue); 
    e.commit(); 
    } 
+0

必須設置從偏好微調選定的項目已開始微調(設置Spinner適配器)後,或將默認的第一個項目 – TouchBoarder

+0

看到我的最新答案的解決方案 – TouchBoarder

回答

2

使用spinner.setOnItemSelectedListener()存儲分配給它相同的值選擇的項目位置優先

spinner.setAdapter(mySpinnerAdapter); 

    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 

     /** 
     * Called when a new item is selected (in the Spinner) 
     */ 
     public void onItemSelected(AdapterView<?> parent, 
      View view, int position, long id) { 
      mPrefs.edit().putInt("PREF_SPINNER", position).commit(); 
     } 

     public void onNothingSelected(AdapterView<?> parent) { 
      // Do nothing. 
     } 
    }); // (optional) 

    //UPDATE - When you are using a button onCLick() 
    // to set the spinner selection: 
    button.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      spinner.setSelection(mPrefs.getInt("PREF_SPINNER", 0)); 

     } 
    }); 



    // set the spinner selected item from preference after 
    // spinner.setAdapter(mySpinnerAdapter); 
    // -or it will default to the first item 
// spinner.setSelection(mPrefs.getInt(PREF_SPINNER, 0)); 
1

確保恆定的PREF_SPINNER和使用 「PREF_SPINNER」 在你的代碼

mPrefs.getInt(PREF_SPINNER, 0) 
e.putInt("PREF_SPINNER", Spinnervalue);