【问题标题】:Can't show data on spinner? throws Null Pointer Exception无法在微调器上显示数据?抛出空指针异常
【发布时间】:2011-09-09 10:31:52
【问题描述】:

谁能告诉我这段代码错了...我把代码放在下面。

mySQLiteAdapter = new SQLiteAdapter(this);
    cursor = mySQLiteAdapter.displayCategory();
    startManagingCursor(cursor);

    String[] from = new String[] { SQLiteAdapter.KEY_ID, SQLiteAdapter.KEY_CATEGORY };

    int[] to = new int[] { android.R.id.text1 };

    mCategory = (Spinner) findViewById(R.id.choose_category);
    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
            android.R.layout.simple_spinner_item, cursor, from, to);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    mCategory.setAdapter(adapter);

MyAdapter 类具有以下代码

public Cursor displayCategory() {
        String[] columns = new String[]{KEY_ID, KEY_CATEGORY};          
        Cursor cursor = sqLiteDatabase.query(MYCATEGORY_TABLE, columns, 
                null, null, null, null, null);

        return cursor;

空指针异常。如何避免。 这是log cat上的错误

 09-09 15:49:16.535: ERROR/AndroidRuntime(6526): Uncaught handler: thread main exiting  due to uncaught exception
09-09 15:49:16.545: ERROR/AndroidRuntime(6526): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.mpt.receiptor/com.android.mpt.receiptor.SearchReceipt}: java.lang.NullPointerException
09-09 15:49:16.545: ERROR/AndroidRuntime(6526):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
09-09 15:49:16.545: ERROR/AndroidRuntime(6526):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
09-09 15:49:16.545: ERROR/AndroidRuntime(6526):     at android.app.ActivityThread.access$2200(ActivityThread.java:119)
09-09 15:49:16.545: ERROR/AndroidRuntime(6526):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
09-09 15:49:16.545: ERROR/AndroidRuntime(6526):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-09 15:49:16.545: ERROR/AndroidRuntime(6526):     at android.os.Looper.loop(Looper.java:123)
09-09 15:49:16.545: ERROR/AndroidRuntime(6526):     at android.app.ActivityThread.main(ActivityThread.java:4363)
09-09 15:49:16.545: ERROR/AndroidRuntime(6526):     at java.lang.reflect.Method.invokeNative(Native Method)
09-09 15:49:16.545: ERROR/AndroidRuntime(6526):     at java.lang.reflect.Method.invoke(Method.java:521)
09-09 15:49:16.545: ERROR/AndroidRuntime(6526):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
09-09 15:49:16.545: ERROR/AndroidRuntime(6526):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
09-09 15:49:16.545: ERROR/AndroidRuntime(6526):     at dalvik.system.NativeStart.main(Native Method)
09-09 15:49:16.545: ERROR/AndroidRuntime(6526): Caused by: java.lang.NullPointerException
09-09 15:49:16.545: ERROR/AndroidRuntime(6526):     at com.android.mpt.receiptor.SQLiteAdapter.displayCategory(SQLiteAdapter.java:135)
09-09 15:49:16.545: ERROR/AndroidRuntime(6526):     at com.android.mpt.receiptor.SearchReceipt.onCreate(SearchReceipt.java:96)
09-09 15:49:16.545: ERROR/AndroidRuntime(6526):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
09-09 15:49:16.545: ERROR/AndroidRuntime(6526):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)

请有人帮助我。

提前致谢

【问题讨论】:

  • “如何避免。” ...不要使用SomeObject obj = functionThatReturnsNull(); obj.DoSmthing();
  • SomeObject obj = functionThatReturnsNull(); if(obj != null) { obj.DoSmthing(); } 或检查为什么 functionThatReturnsNull() 返回 null ... 阅读/分析代码远比复制/粘贴困难得多 ...

标签: android spinner


【解决方案1】:

看起来像这一行:

Cursor cursor = sqLiteDatabase.query(MYCATEGORY_TABLE, columns,  
            null, null, null, null, null); 

sqLiteDatabase 为 null - 确保在您的 onCreate 方法中对其进行了初始化。

【讨论】:

  • 或 mCategory 为 null mCategory = (Spinner) findViewById(R.id.choose_category); 他没有说明哪里发生错误
  • blablabla(SearchReceipt.java:96)
  • @Selvin 查看日志好友。罪魁祸首是 displayCategory()
【解决方案2】:

为什么不能在 displayCategory() 方法中设置断点?空指针异常很容易找到。正如 Cjk 所指出的,sqlitedatabase 是统一化的。调试将帮助您在浪费大量时间之前发现并解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    • 2020-08-10
    相关资源
    最近更新 更多