【问题标题】:Null pointer Exception while using SimpleCursorAdapter [duplicate]使用 SimpleCursorAdapter 时出现空指针异常 [重复]
【发布时间】:2014-10-01 15:31:20
【问题描述】:

我想从我的数据库中获取一些数据... 我正在使用 SimpleCursorAdapter 将数据传输到列表视图,但我得到一个 NullPointer 异常,这里是 LogCat:

10-01 17:26:42.048: E/Shop(26288): java.lang.NullPointerException
10-01 17:26:42.048: E/Shop(26288):  at       .diamond.clickers.Shop.populateListViewFromDB(Shop.java:104)
10-01 17:26:42.048: E/Shop(26288):  at com.diamond.clickers.Shop.onCreateView(Shop.java:51)
10-01 17:26:42.048: E/Shop(26288):  at android.app.Fragment.performCreateView(Fragment.java:1777)
10-01 17:26:42.048: E/Shop(26288):  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:904)
10-01 17:26:42.048: E/Shop(26288):  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1106)
10-01 17:26:42.048: E/Shop(26288):  at android.app.BackStackRecord.run(BackStackRecord.java:690)
10-01 17:26:42.048: E/Shop(26288):  at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1571)
10-01 17:26:42.048: E/Shop(26288):  at android.app.FragmentManagerImpl$1.run(FragmentManager.java:447)
10-01 17:26:42.048: E/Shop(26288):  at android.os.Handler.handleCallback(Handler.java:733)
10-01 17:26:42.048: E/Shop(26288):  at android.os.Handler.dispatchMessage(Handler.java:95)
10-01 17:26:42.048: E/Shop(26288):  at android.os.Looper.loop(Looper.java:157)
10-01 17:26:42.048: E/Shop(26288):  at android.app.ActivityThread.main(ActivityThread.java:5867)
10-01 17:26:42.048: E/Shop(26288):  at java.lang.reflect.Method.invokeNative(Native Method)
10-01 17:26:42.048: E/Shop(26288):  at java.lang.reflect.Method.invoke(Method.java:515)
10-01 17:26:42.048: E/Shop(26288):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
10-01 17:26:42.048: E/Shop(26288):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:674)
10-01 17:26:42.048: E/Shop(26288):  at dalvik.system.NativeStart.main(Native Method)

这是我的代码:

void populateListViewFromDB() {

    Cursor cursor = myDb.getAllRows();

    // Allow activity to manage lifetime of the cursor.
    // DEPRECATED! Runs on the UI thread, OK for small/short queries.
    getActivity().startManagingCursor(cursor);
    //if (cursor.moveToLast()) {
        //  do {
        // do what you need with the cursor here


    // Setup mapping from cursor to view fields:
    String[] fromFieldNames = new String[] 
            {DBAdapter.KEY_NAME,DBAdapter.KEY_PRICE,DBAdapter.KEY_LEVEL,DBAdapter.KEY_ART,DBAdapter.KEY_VALUETXT,DBAdapter.KEY_PIC };
    int[] toViewIDs = new int[]
            {R.id.tv_Shop_item1,     R.id.tv_Shop_Price_item1,R.id.tv_shop_Level_item1,R.id.tv_shop_use_item1,R.id.tv_shop_use_item2,R.id.IV_Shop_item1 };

    // Create adapter to may columns of the DB onto elemesnt in the UI.
    SimpleCursorAdapter myCursorAdapter = 
            new SimpleCursorAdapter(
                    getActivity().getApplicationContext(),      // Context
                    R.layout.item_shop, // Row layout template
                    cursor,                 // cursor (set of DB records to map)
                    fromFieldNames,         // DB Column names
                    toViewIDs               // View IDs to put information in
                    );

    // Set the adapter for the list view
    ListView myList = (ListView)getActivity().findViewById(R.id.listViewShop);
    myList.setAdapter(myCursorAdapter);
     //  } while (cursor.moveToPrevious());
    //}
}

【问题讨论】:

  • Shop.java 的第 104 行是什么?
  • 'myList.setAdapter(myCursorAdapter);'
  • 是的,它在片段中...有什么问题?

标签: java android sql listview simplecursoradapter


【解决方案1】:
getActivity().findViewById(R.id.listViewShop)

假设列表视图在片段布局中,它还不是从活动onCreateView() 调用的方法中活动视图层次结构的一部分。

将您在onCreateView() 中扩展的视图层次结构传递为您调用findViewById() 的根视图,以便在那里查找视图。

【讨论】:

  • hmmm 之前也试过这个,但它没有用......但现在它可以......有趣..但非常感谢!
【解决方案2】:

populateListViewFromDB() 的调用从onCreateView 更改为onActivityCreated,它应该可以工作。还要确保R.id.listViewShop 的布局与您在 onCreateView 上充气的布局相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-26
    • 1970-01-01
    • 2020-03-21
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多