2016-06-28 94 views
0

我称之为片段Notification n = new Notification(getContext());显示java.lang.NullPointerException context.getSharedPreferences

@Override 
public void setMenuVisibility(final boolean visibility) { 
    super.setMenuVisibility(visibility); 

    if (visibility) { 

     Notification n = new Notification(getContext()); 

     if (n.getNewNotificationsCount() > 0) { 
      n.setNotificationsAsSeen(); 
      n.setNewNotificationsCount(0); 
     } 
    } 

} 

,并得到nullpointerexception

这里是Notification.class装载机

public Notification(Context context) { 
    this.context = context; 
    pref = context.getSharedPreferences(NOTIFICATION_SETTINGS_PREF_NAME, PRIVATE_MODE);//here is error (NullPointerException) 
    editor = pref.edit(); 
} 
+0

显然你必须考虑片段的生命周期...... – Selvin

回答

0

你必须采取的第一个考虑到片段只有在附加到活动后才会获得活动上下文。在onCreate()片段的生命周期方法或更高版本中调用此方法是安全的,而不是在调用onDetached后调用此方法。 然后你必须考虑到,在API 23上添加了Fragment的getContext()方法,所以如果你在API较低的设备上使用SDK工具23运行应用程序,你可能会得到NullPointerException。

相关问题