2016-02-13 41 views
-1

我已經能夠將整數和字符串保存爲共享首選項,但已經搜索並似乎無法將Spinners選定的值保存爲共享首選項?如何將Spinner保存爲共享首選項?

 spinner = (Spinner)findViewById(R.id.spnCalorieRange); 
     adapter = ArrayAdapter.createFromResource(this, R.array.Calorie_Range, 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); 
       String pos =spinner.getSelectedItem().toString(); 
       //sharedPreferences.edit().putInt("PREF_SPINNER", position).commit(); 
       if (item == 0){ 
        deficitPercentage = .05; 
       } 
       else if (item ==1) 
       { 
        deficitPercentage = .1; 
       } 
       else if (item ==2) 
       { 
        deficitPercentage = .15;  
       } 
       else if (item ==3) 
       { 
        deficitPercentage = .2; 
       } 
       else if (item ==4) 
       { 
        deficitPercentage = .25; 
       } 
       else 
       { 
        deficitPercentage = .3; 
       } 
       editor.putString("pos", pos); 
       editor.commit(); 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 
       // TODO Auto-generated method stub 

      } 

     }); 

這裏訪問共享偏好在OnCreate中:

 protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_diet); 


     spnCalorieRange = (Spinner) findViewById(R.id.spnCalorieRange); 

     sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 
     SharedPreferences pref = getApplicationContext().getSharedPreferences("Options", MODE_PRIVATE); 
     editor=pref.edit(); 

     String strAvgCalIntake = Double.toString(dailyCalorieIntake); 
     String strGoal = Double.toString(goal); 

     strAvgCalIntake = loadSavedPreference("strAvgCalIntake"); 
     strGoal = loadSavedPreference("strGoal"); 

     etAverageCalorieIntake.setText(strAvgCalIntake); 
     etLoseWeight.setText(strGoal); 

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

     // int selectedPosition = sharedpreferences.getInt("spinnerSelection", 0); 


     int selectedPosition = spnCalorieRange.getSelectedItemPosition(); 
     sharedPreferences.getInt("spinnerSelection", selectedPosition); 
     ((Editor) sharedPreferences).commit(); 

這裏就是我節省了共享偏好按鈕: 字符串是BTW節省罰款。

Button btnBack = (Button)findViewById(R.id.btnBack); 
    btnBack.setOnClickListener(new View.OnClickListener() { 
      @Override 
     public void onClick(View v) { 

        String strAvgCalIntake =  Double.toString(dailyCalorieIntake); 
        String strGoal = loadSavedPreference("strGoal"); 
       spnCalorieRange = (Spinner) findViewById(R.id.spnCalorieRange); 

        strAvgCalIntake = etAverageCalorieIntake.getText().toString(); 
        savePreference("strAvgCalIntake",strAvgCalIntake); 

       strGoal = etLoseWeight.getText().toString(); 
       savePreference("strGoal",strGoal); 

        SharedPreferences spref = getSharedPreferences("pref", Activity.MODE_PRIVATE); 
        SharedPreferences.Editor editor = spref.edit(); 
       editor.putString("deficitPercentage_key", Double.toString(deficitPercentage)); // 
        editor.commit(); 
+0

,你是如何閱讀從SharedPreferences該值。張貼部分代碼。 – Bharatesh

+0

該代碼現已發佈,感謝您的幫助,真正感謝它:) – Coco12

回答

0

如果您已經驗證了deficitPercentage值,(我希望你做)

SharedPreferences spref = getSharedPreferences("your_prefs_name", Activity.MODE_PRIVATE); 
SharedPreferences.Editor editor = spref.edit(); 
editor.putString("deficitPercentage_key", Double.toString(deficitPercentage)); // 
editor.commit(); 
+0

通過驗證赤字百分比是什麼意思? – Coco12

+0

我該怎麼做? – Coco12

+0

如果** deficitPercentage **沒有被任何其他模塊修改,那麼是可以的,但你應該用一個常量代替.05,0.2,它會更好,並且會提高你的應用程序的質量... –