2013-01-13 53 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);