我收到此错误:
进程:com.mycompany.myngdroidapp,PID:16170 java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'android.content.SharedPreferences android.content.Context.getSharedPreferences(java.lang.String,int)'
我写了这段代码
ContextClass:
package com.ngdroidapp;
import android.content.Context;
import istanbul.gamelab.ngdroid.base.BaseActivity;
import istanbul.gamelab.ngdroid.base.BaseCanvas;
public class ContextClass
{
public static Context context;
public static BaseActivity activity;
public static void setContext(Context Ncontext) {
context = Ncontext;
}
public static Context getContext() {
return context;
}
public static void setActivity(BaseActivity activity) { ContextClass.activity = activity; }
public static BaseActivity getActivity() { return activity; }
}
MenuCanvas:
public Context getApplicationContext() {
return context;
}
SharedPreferences mSharedPrefs = getApplicationContext().getSharedPreferences("veriTabani", MODE_PRIVATE);
SharedPreferences.Editor mPrefsEditor = mSharedPrefs.edit();
int seviye = mSharedPrefs.getInt("seviye", 0);
mPrefsEditor.putInt("seviye", ++seviye);
mPrefsEditor.commit();
答案 0 :(得分:0)
context
尚未初始化。是空的如果在getApplicationContext()
或Activity
中,则可以使用Service
获取上下文;如果在getContext()
中,则可以使用Fragment
获取上下文。或将其作为参数传递给方法或构造函数,无论这些方法在何处定义。
答案 1 :(得分:0)
在 Android 上,您可以将 Activity 转换为 Context。因此,您可以在需要上下文的地方使用应用的 Android Activity。在 NgdroidApp 上,活动是根(NgApp 类)的公共成员。如果您需要从 MenuCanvas 访问活动,您可以编写:
SharedPreferences mSharedPrefs = root.activity.getSharedPreferences("veriTabani", MODE_PRIVATE);
答案 2 :(得分:0)
这是因为你还没有初始化上下文。
在使用 like 之前初始化它:
context = getApplicationContext();
或
context = YourActivityName.this;
或
context = this;