我正在尝试获取存储在“共享首选项”中的值,否则返回默认值。 这是我的代码:
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的类中。这里的键包含一个字符串值,在将其保存为共享首选项时也将使用该字符串值。
这是错误:
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的解释,我已经发布了我的代码,这似乎是正确的,但仍然出现错误。我问是否有任何错误,请指出
答案 0 :(得分:0)
“上下文”变量从何而来?确保它不为空。
如果正如您所说的那样,它在您活动的OnCreate方法中,则可以如下更改该行:
Long count = SharedPref.getSdkInfo(this, "count");