2013-10-02 30 views
0

我有以下代碼:如何保存多個RadioGroups偏好,而不用重複使用代碼

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_settings);  

     final RadioGroup rg_numberOfQuestions = (RadioGroup) findViewById(R.id.radioGroupQuestions); 
     int defaultValue = rg_numberOfQuestions.getId(); 
     RadioButton rbtn = ((RadioButton) rg_numberOfQuestions.findViewById(getPref(defaultValue, "NQ"))); 
     if(rbtn!=null) 
      rbtn.setChecked(true); 
     rg_numberOfQuestions.setOnCheckedChangeListener(this); 

     final RadioGroup rg_numbersBetween = (RadioGroup) findViewById(R.id.radioGroupNumbersBetween); 
     int defaultValue1 = rg_numbersBetween.getId(); 
     RadioButton rbtn1 = ((RadioButton) rg_numbersBetween.findViewById(getPref(defaultValue1, "NB"))); 
     if(rbtn1!=null) 
      rbtn1.setChecked(true); 
     rg_numbersBetween.setOnCheckedChangeListener(this);  
    } 

正如你可以看到有一種相同的代碼重複兩次,這是這一部分:

int defaultValue = rg_numberOfQuestions.getId(); 
     RadioButton rbtn = ((RadioButton) rg_numberOfQuestions.findViewById(getPref(defaultValue, "NQ"))); 
     if(rbtn!=null) 
      rbtn.setChecked(true); 
     rg_numberOfQuestions.setOnCheckedChangeListener(this); 

即使上面的代碼工作正常我的問題是否有更好的方式做到這一點?因爲這似乎是我重複的代碼,並且作爲新開發者不能找出任何其他方式來做這件事。

回答

0

您可以實現此方法:

selectSavedRadioButton(RadioGroup group, String savedButtonPreferencesKey) { 
    RadioButton button = (RadioButton) group.findViewById(getPref(group.getId(), preferencesKey)); 
    if (button != null) { 
     button.setChecked(true); 
    } 
} 

,你可以這樣調用:

RadioGroup rg_numberOfQuestions = (RadioGroup) findViewById(R.id.radioGroupQuestions); 
selectSavedRadioButton(rg_numberOfQuestions, "NQ"); 
+0

我想這一點,它不工作。 – Gurnor

+0

「不工作」不是一個有用的描述。 _什麼不工作?你有什麼錯誤嗎? –

+0

抱歉它沒有保存默認值。這也應該進入方法或外部? rg_numberOfQuestions.setOnCheckedChangeListener(本); – Gurnor