让我们想象一下,如果首选项'选项设置为true,我们只想执行某些操作。它可能是情况的类图:
PreferencesActivity
的 getDoSomethingOptionValue()
中的实施可能如下:
public boolean getDoSomethingOptionValue(){
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getActivity()
return settings.getString("doSomethingOptionValue", "false");
}
在Java (我的意思是,没有Android), MainActivity
应该使用PreferencesActivity
中的get方法来获取值:< / p>
if (PreferencesActivity.getDoSomethingOptionValue()){
// TODO
executeSomething()
}
但与Android (我喜欢this tutorial about how to communicate two running activities)沟通活动实际上更复杂。 所以我被邀请直接从MainActivity
查看偏好设置。代码会更简单,更有效。它可能是这样的:
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getActivity()
if (settings.getString("doSomethingOptionValue", "false"){
// TODO
executeSomething()
}
Android的推荐做法是什么?
答案 0 :(得分:0)
“不要重复自己”的原则仍然适用,即如果您使用两个位置的相同代码,则将其分解为常用方法。一个例子是Settings
类中的静态方法:
public class Settings {
public static boolean getDoSomethingOptionValue(Context context) {
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
return settings.getString("doSomethingOptionValue", "false");
}
}
(当然,如果您的项目需要,可以使用更复杂的选项(非静态方法,通过依赖注入可用的设置对象)。)
您不需要在PreferencesActivity
中手动阅读设置,addPreferencesFromResource可以为您做到这一点。