我的公共var对其堂兄来说是看不见的

时间:2011-12-22 03:35:01

标签: android android-preferences

受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无法解决”的虚拟划桨

2 个答案:

答案 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,除非你真的需要,除非你真的知道你在做什么。在大多数情况下(至少对于简单的应用程序),没有必要。仅仅因为他们告诉你如何在书中做到这一点并不意味着你需要这样做。