2015-08-19 71 views
-1

我有一个列表视图列在下面。当我在列表视图中选择第一个值时,一切正常。但是,任何时候我选择除第一个listview值之外的任何应用程序都会崩溃。不知道是什么原因造成的。谢谢。列表视图选择崩溃应用

<android.support.v4.widget.DrawerLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 

xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
> 


<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <LinearLayout 
     android:id="@+id/container_toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 

     <include 
      android:id="@+id/toolbar" 
      layout="@layout/toolbar" /> 
    </LinearLayout> 

    <FrameLayout 
     android:id="@+id/container_body" 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:fitsSystemWindows="true" 
     android:clipToPadding="false" 
     /> 

    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     > 

     <TextView 
      android:id="@+id/txt_empty_list_cars" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_centerInParent="true" 
      android:layout_margin="4dp" 
      android:gravity="center" 
      android:text="@string/no_cars_in_DB" 
      android:textAppearance="?android:attr/textAppearance" 
      android:textColor="@android:color/darker_gray" 
      android:visibility="gone" /> 

     <ListView 
      android:id="@+id/list_cars" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/container_body" 
      android:layout_margin="4dp" 
      android:divider="@android:drawable/divider_horizontal_bright" 
      android:dividerHeight="0.5dp" 
      android:listSelector="@android:drawable/list_selector_background" 

      /> 


    </LinearLayout> 

    </LinearLayout> 


    <fragment 
    android:id="@+id/fragment_navigation_drawer" 
    android:name=“com.example.my.app.FragmentDrawer" 
    android:layout_width="@dimen/nav_drawer_width" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:layout="@layout/fragment_navigation_drawer" 
    tools:layout="@layout/fragment_navigation_drawer" 
    /> 

</android.support.v4.widget.DrawerLayout> 

logcat的下面:

08-19 11:56:32.598 1943-1943/com.example.my.app E/AndroidRuntime﹕ FATAL EXCEPTION: main 
Process: com.example.my.app, PID: 1943 
android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0 
     at android.database.AbstractCursor.checkPosition(AbstractCursor.java:426) 
     at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136) 
     at android.database.AbstractWindowedCursor.getInt(AbstractWindowedCursor.java:68) 
     at com.example.my.app.ListCarsAdapter.getView(ListCarsAdapter.java:71) 
     at android.widget.AbsListView.obtainView(AbsListView.java:2344) 
     at android.widget.ListView.makeAndAddView(ListView.java:1864) 
     at android.widget.ListView.fillDown(ListView.java:698) 
     at android.widget.ListView.fillFromTop(ListView.java:759) 
     at android.widget.ListView.layoutChildren(ListView.java:1673) 
     at android.widget.AbsListView.onLayout(AbsListView.java:2148) 
     at android.view.View.layout(View.java:15596) 
     at android.view.ViewGroup.layout(ViewGroup.java:4966) 
     at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1076) 
     at android.view.View.layout(View.java:15596) 
     at android.view.ViewGroup.layout(ViewGroup.java:4966) 
     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703) 
     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557) 
     at android.widget.LinearLayout.onLayout(LinearLayout.java:1466) 
     at android.view.View.layout(View.java:15596) 
     at android.view.ViewGroup.layout(ViewGroup.java:4966) 
     at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:907) 
     at android.view.View.layout(View.java:15596) 
     at android.view.ViewGroup.layout(ViewGroup.java:4966) 
     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573) 
     at android.widget.FrameLayout.onLayout(FrameLayout.java:508) 
     at android.view.View.layout(View.java:15596) 
     at android.view.ViewGroup.layout(ViewGroup.java:4966) 
     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703) 
     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557) 
     at android.widget.LinearLayout.onLayout(LinearLayout.java:1466) 
     at android.view.View.layout(View.java:15596) 
     at android.view.ViewGroup.layout(ViewGroup.java:4966) 
     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573) 
     at android.widget.FrameLayout.onLayout(FrameLayout.java:508) 
     at android.view.View.layout(View.java:15596) 
     at android.view.ViewGroup.layout(ViewGroup.java:4966) 
     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703) 
     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557) 
     at android.widget.LinearLayout.onLayout(LinearLayout.java:1466) 
     at android.view.View.layout(View.java:15596) 
     at android.view.ViewGroup.layout(ViewGroup.java:4966) 
     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573) 
     at android.widget.FrameLayout.onLayout(FrameLayout.java:508) 
     at android.view.View.layout(View.java:15596) 
     at android.view.ViewGroup.layout(ViewGroup.java:4966) 
     at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2072) 
     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1829) 
     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054) 
     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5779) 
     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767) 
     at android.view.Choreographer.doCallbacks(Choreographer.java:580) 
     at android.view.Choreographer.doFrame(Choreographer.java:550) 
     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753) 
     at android.os.Handler.handleCallback(Handler.java:739) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:135) 
     at android.app.ActivityThread.main(ActivityThread.java:5221) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
+4

你应该发布你的代码和logcat以使你的问题更加清晰。 – Aakash

+0

好的。我添加了logcat输出。 – neo

回答

0

看来你填补数据库这个名单,但光标你使用返回空值

你必须让这个检查

if(cursor != null && cursor.moveToFirst()) 
+0

但是listview上的第一个选择不会返回错误,只有第二个和第三个出现错误。当我添加抽屉导航时,这个错误从字面上开始。 – neo

+0

导致游标返回null,使用调试器来检查它是如何进行的,将断点 –