本帖最后由 阳丹老师 于 2016-3-28 18:42 编辑  
 
                      在Activity的成员中写 private SharedPreferences sp = getSharedPreferences("config",MODE_PRIVATE);报 NullPointException的问题  
  - 首先要明白一点,成员变量实在加载完构造方法之后,才初始化的。
 -  Activity继承自 ContextThemeWrapper,而 ContextThemeWrapper继承自ContextWrapper。
 
               getSharedPreferences()方法是ContextWrapper类中的方法。mBase为Context对象 
- Activity没有构造方法,它走的是父类的构造方法。而它的父类ContextThemeWrapper构造方法是调用的ContextWrapper的构造方法同时传递了一个null对象进去。
 - ContextWrapper构造方法
 
 
  
 3、ContextThemeWrapper构造方法  
 
              因此在成员变量中调用getSharedPreferences会报空指针异常。
  
        从上图可以看出Context对象是通过attachBaseContext()方法赋值的。而在Activity的attach方法中调用此方法,并给Context对象赋值。attach方法是Activity被创建的时候调用的方法,它执行在OnCreate()方法之前。因此如果要调用getSharedPreference()方法,可以在onCreate()、onStart()等方法中 
 
 |