受Magenta的书“学习Android”的启发,我为我的应用程序创建了一个Application类:
public class KITAppClass extends Application implements
OnSharedPreferenceChangeListener {
private static final String TAG = KITAppClass.class.getSimpleName();
//private SharedPreferences KITPrefs;
public SharedPreferences KITPrefs;
. . .
但是,现在我在另一个引用SharedPreferences的类文件中的“KITPrefs无法解析”:
allContacts.setSelected(KITPrefs.getBoolean("allContacts", false));
我想知道:如果prefs是共享的,为什么它们在示例代码中标记为“private”? 为什么即使在我将其标记为“公开”之后仍然没有看到它?
如果我添加“import KITAppClass;”我得到了“导入KITAppClass无法解决”的虚拟划桨
答案 0 :(得分:1)
要从其他KITPrefs
课程中访问Activity
,您可以使用getApplicationContext()
投射Application
课程。
((KITAppClass)getApplicationContext()).KITPrefs.getBoolean("allContacts", false);
答案 1 :(得分:1)
...试
public class KITAppClass extends Application implements
OnSharedPreferenceChangeListener {
...
protected static SharedPreferences kitPrefs;
...
}
然后使用应用中的kitPrefs
(或其他)类(假设它们占用相同的命名空间)访问Activity
,例如......
KITAppClass.kitPrefs.getBoolean(...);
在说,保持SharedPreferences
班级Application
的实例不是必要的,因为您可以随时从任何SharedPreferences
获得Activity
。请参阅Using Shared Preferences。
另外,请三思而后行实际扩展Application
,除非你真的需要,除非你真的知道你在做什么。在大多数情况下(至少对于简单的应用程序),没有必要。仅仅因为他们告诉你如何在书中做到这一点并不意味着你需要这样做。