2013-10-02 24 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