Android 尝试插入记录时发生NullPointerException

Android 尝试插入记录时发生NullPointerException,android,nullpointerexception,Android,Nullpointerexception,我正在尝试将一些记录插入数据库。问题是,当我单击“保存”按钮时,我得到了此异常。因此,首先我检查了logcat并过滤掉了这些消息 03-21 18:07:00.820: E/AndroidRuntime(4756): FATAL EXCEPTION: main 03-21 18:07:00.820: E/AndroidRuntime(4756): java.lang.NullPointerException 03-21 18:07:00.820: E/AndroidRun

我正在尝试将一些记录插入数据库。问题是,当我单击“保存”按钮时,我得到了此异常。因此,首先我检查了logcat并过滤掉了这些消息

    03-21 18:07:00.820: E/AndroidRuntime(4756): FATAL EXCEPTION: main
    03-21 18:07:00.820: E/AndroidRuntime(4756): java.lang.NullPointerException
    03-21 18:07:00.820: E/AndroidRuntime(4756):     at com.example.kjk.MainActivity$1.onClick(MainActivity.java:51)
    03-21 18:07:00.820: E/AndroidRuntime(4756):     at android.view.View.performClick(View.java:4240)
    03-21 18:07:00.820: E/AndroidRuntime(4756):     at android.view.View$PerformClick.run(View.java:17721)
    03-21 18:07:00.820: E/AndroidRuntime(4756):     at android.os.Handler.handleCallback(Handler.java:730)
    03-21 18:07:00.820: E/AndroidRuntime(4756):     at android.os.Handler.dispatchMessage(Handler.java:92)
    03-21 18:07:00.820: E/AndroidRuntime(4756):     at android.os.Looper.loop(Looper.java:137)
    03-21 18:07:00.820: E/AndroidRuntime(4756):     at android.app.ActivityThread.main(ActivityThread.java:5103)
    03-21 18:07:00.820: E/AndroidRuntime(4756):     at java.lang.reflect.Method.invokeNative(Native Method)
    03-21 18:07:00.820: E/AndroidRuntime(4756):     at java.lang.reflect.Method.invoke(Method.java:525)
    03-21 18:07:00.820: E/AndroidRuntime(4756):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
    03-21 18:07:00.820: E/AndroidRuntime(4756):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    03-21 18:07:00.820: E/AndroidRuntime(4756):     at dalvik.system.NativeStart.main(Native Method)
我认为例外来自这里,但我无法找到任何解决问题的方法

AddData(name.getText().toString(),姓氏.getText().toString())

下面是数据库类

private static final String Db_Name="Mydb";
private static final int ver=1;


public Veritabani(Context context, String name, CursorFactory factory,
        int version) {
    super(context, Db_Name, null, ver);
    // TODO Auto-generated constructor stub
}

@Override
public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub
    db.execSQL("CREATE TABLE Info(name TEXT,surname TEXT);");

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub
    db.execSQL("DROP TABLE IF EXIST Info");
    onCreate(db);
}
你的追踪显示

java.lang.NullPointerException
 03-21 18:07:00.820: E/AndroidRuntime(4756):at com.example.kjk.MainActivity$1.onClick(MainActivity.java:51)
根据你的评论

所以v1是数据库的一个实例,第51行由 logcat是v1.close()

这表示v1为空,您尚未正确初始化它

试一试


btnfetch.setOnClickListener
代码中,尝试将
cursor.moveToFirst()
放在
while(cursor.moveToNext()){}
之前

java.lang.NullPointerException
 03-21 18:07:00.820: E/AndroidRuntime(4756):at com.example.kjk.MainActivity$1.onClick(MainActivity.java:51)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
v1 = new Veritabani(this);