我想创建一个应用程序,它需要用户输入主题名称和子代码,并且该子代码将用作字段名称来创建数据库Table.But在创建时收到空指针异常数据库甚至共享首选项正在被保存。如何通过从共享首选项获取字段来创建数据库?
这不是一个“context.getSharedPreference问题”请看看。
public class Check_regularHelper extends SQLiteOpenHelper {
Context mcontext=null;
public static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "Check_regular.db";
SharedPreferences pref;
private String createCMD(){
String s = "";
int total=pref.getInt("sno",0);
for(int i=1;i<=total;i++){
s += pref.getString(String.valueOf(i),"") + " INTEGER DEFAULT 0";
if(i!=total){
s+=", ";
}
}
return s;
}
public String SQL_CREATE_ENTRIES = "CREATE TABLE "+ SubContract.Check_Regular.TABLE_NAME
+ " (" + SubContract.Check_Regular.DATE + " TEXT PRIMARY KEY," + createCMD() +");";
public Check_regularHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
mcontext=context;
this.pref = context.getSharedPreferences(subjectFill.Subjects,Context.MODE_PRIVATE);
if(pref==null) Log.e(context.toString(),"fine-----------------");
if(pref!=null) Log.e(context.toString(),"wrong-----------------");
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(SQL_CREATE_ENTRIES);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
08-24 19:21:06.184 8226-8226/com.creator.innov.check_regular E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.creator.innov.check_regular, PID: 8226
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.creator.innov.check_regular/com.creator.innov.check_regular.DailyTimeTable.Check_regularSubject}: java.lang.NullPointerException: Attempt to invoke interface method 'int android.content.SharedPreferences.getInt(java.lang.String, int)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2334)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2483)
at android.app.ActivityThread.access$900(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349)
即使我试图检查是否sharedPreferences为空或不是,它没有表现出任何的事情。请帮助
你是天才man.Thanks Man。 .. :) – Creatorcool