【问题标题】:Getting NullPointerException while fetching value from shared preference从共享首选项中获取值时获取 NullPointerException
【发布时间】:2019-10-23 09:45:41
【问题描述】:

我正在尝试获取存储在共享首选项中的值,否则返回默认值。 这是我的代码:

Long count = SharedPref.getSdkInfo(context, "count");

这一行在 onCreate 中。

public static Long getSdkInfo(Context context,String key){
    SharedPreferences sharedPref = context.getSharedPreferences(ApiConstant.SDK_INFO, 0);
    Long data = sharedPref.getLong(key, 0L);
    return data;
}

getSdkInfo 方法位于名为 SharedPref 的不同类中。这里的 key 包含一个字符串值,在共享首选项中保存值时也会使用该值。

这是错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.viral.snapminttracker/com.viral.snapminttrackersdk.SendDataActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.SharedPreferences android.content.Context.getSharedPreferences(java.lang.String, int)' on a null object reference
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6669)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

我尝试了很多示例,但没有一个有效并且无法识别错误。请帮忙。 谢谢

不,提供的链接只是解释为什么会发生 nullPointerException,我已经发布了我的代码,这似乎是正确的,但仍然出现错误。请问一下有没有错误请指出

【问题讨论】:

  • 不,这是为什么会发生 nullPointerException 的解释,我已经发布了我的代码,这似乎是正确的,但仍然出现错误。请问是不是有错误,请指出。
  • 不知道我们应该如何用 2 行代码在这个特定的上下文中找到什么是 null
  • 好的,正在编辑以添加更多代码
  • 显然context 为空。我们不能告诉你为什么。副本包含解决此问题所需的所有信息。

标签: java sharedpreferences


【解决方案1】:

您的“上下文”变量来自哪里?确保它不为空。

如果如您所说,它在您的活动的 OnCreate 方法中,您可以按如下方式更改该行:

Long count = SharedPref.getSdkInfo(this, "count");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-08
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    相关资源
    最近更新 更多