Android java.lang.NullPointerException: println 需要一条消息

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/11449589/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-20 07:28:01  来源:igfitidea点击:

java.lang.NullPointerException: println needs a message

androidnullpointerexceptionhashmapprintln

提问by Laire

I get the errror: java.lang.NullPointerException: println needs a message when I call this method:

我得到错误:java.lang.NullPointerException:当我调用这个方法时,println需要一条消息:

lst_info = new HashMap<String, String>();
SystemDatabaseHandler db = new SystemDatabaseHandler(getApplicationContext());
lst_info = db.getLstInfo(sql_id);

SystemDatabaseHandler:

系统数据库处理程序:

public HashMap<String , String> getLstInfo(int id){
    HashMap<String , String> lst_temp;
    lst_temp = new HashMap<String , String>();

    String selectQuery = "SELECT * FROM dkr_lst_lst WHERE lst_id = " + id;
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);
    if (cursor.moveToFirst()) {
        do {
            Log.d("sql_id", cursor.getString(0));
            lst_temp.put("sql_id", cursor.getString(0));
        }while (cursor.moveToNext());
    } 
    cursor.close();
    db.close();
    return lst_temp;
}

Log.d("sql_id", cursor.getString(0)); returns:

Log.d("sql_id", cursor.getString(0)); 返回:

07-12 11:56:05.603: D/sql_id(13783): 1

07-12 11:56:05.603: D/sql_id(13783): 1

The Log Cat:

原木猫:

07-12 11:56:05.613: D/Database(13783): dbclose(): path = /data/data/de.bodprod.dkr/databases/dkr, handle = 0x4301a8
07-12 11:56:05.613: D/AndroidRuntime(13783): Shutting down VM
07-12 11:56:05.613: W/dalvikvm(13783): threadid=1: thread exiting with uncaught exception (group=0x4001d5a0)
07-12 11:56:05.623: E/AndroidRuntime(13783): FATAL EXCEPTION: main
07-12 11:56:05.623: E/AndroidRuntime(13783): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.bodprod.dkr/de.bodprod.dkr.BosLstDetailMap}: java.lang.NullPointerException: println needs a message
07-12 11:56:05.623: E/AndroidRuntime(13783):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1872)
07-12 11:56:05.623: E/AndroidRuntime(13783):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1893)
07-12 11:56:05.623: E/AndroidRuntime(13783):    at android.app.ActivityThread.access00(ActivityThread.java:135)
07-12 11:56:05.623: E/AndroidRuntime(13783):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1054)
07-12 11:56:05.623: E/AndroidRuntime(13783):    at android.os.Handler.dispatchMessage(Handler.java:99)
07-12 11:56:05.623: E/AndroidRuntime(13783):    at android.os.Looper.loop(Looper.java:150)
07-12 11:56:05.623: E/AndroidRuntime(13783):    at android.app.ActivityThread.main(ActivityThread.java:4385)
07-12 11:56:05.623: E/AndroidRuntime(13783):    at java.lang.reflect.Method.invokeNative(Native Method)
07-12 11:56:05.623: E/AndroidRuntime(13783):    at java.lang.reflect.Method.invoke(Method.java:507)
07-12 11:56:05.623: E/AndroidRuntime(13783):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
07-12 11:56:05.623: E/AndroidRuntime(13783):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
07-12 11:56:05.623: E/AndroidRuntime(13783):    at dalvik.system.NativeStart.main(Native Method)
07-12 11:56:05.623: E/AndroidRuntime(13783): Caused by: java.lang.NullPointerException: println needs a message
07-12 11:56:05.623: E/AndroidRuntime(13783):    at android.util.Log.println_native(Native Method)
07-12 11:56:05.623: E/AndroidRuntime(13783):    at android.util.Log.d(Log.java:137)
07-12 11:56:05.623: E/AndroidRuntime(13783):    at de.bodprod.dkr.BosLstDetailMap.onCreate(BosLstDetailMap.java:43)
07-12 11:56:05.623: E/AndroidRuntime(13783):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072)
07-12 11:56:05.623: E/AndroidRuntime(13783):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1836)
07-12 11:56:05.623: E/AndroidRuntime(13783):    ... 11 more
07-12 11:56:07.495: D/Process(13783): killProcess, pid=13783

回答by NitroG42

Maybe when you call

也许当你打电话

Log.d("sql_id", cursor.getString(0)); 

cursor.getString(0)returns null, and then it crashes.

cursor.getString(0)返回 null,然后崩溃。

Try :

尝试 :

if(cursor.getString(0) != null) {
    Log.d("sql_id", cursor.getString(0)); 
}

Otherwise, show us: de.bodprod.dkr.BosLstDetailMap.onCreate(BosLstDetailMap.java:43)

否则,向我们展示: de.bodprod.dkr.BosLstDetailMap.onCreate(BosLstDetailMap.java:43)

回答by ρяσ?ρ?я K

try as:

尝试如下:

Log.d("sql_id"," " + cursor.getString(0));

instead of

代替

Log.d("sql_id", cursor.getString(0));

beacuse maybe you are passing second parameter in Log.d empty or null

因为也许你在 Log.d 中传递第二个参数为空或空