2016-02-13 86 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,它会更好,并且会提高你的应用程序的质量... –