Android Studio:java.lang.RuntimeException:无法启动活动ComponentInfo ...:java.lang.ClassCastException:java.util.ArrayList

时间:2014-10-25 19:15:45

标签: java android exception android-activity runtime

完整错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo{app.sunshine.android.example.com.sunshine/app.sunshine.android.example.com.sunshine.vudataActivity}: java.lang.ClassCastException: java.util.ArrayList
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
            at android.app.ActivityThread.access$1500(ActivityThread.java:117)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:123)
            at android.app.ActivityThread.main(ActivityThread.java:3683)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:507)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.ClassCastException: java.util.ArrayList
            at app.sunshine.android.example.com.sunshine.vudataActivity$PlaceholderFragment.onCreateView(vudataActivity.java:83)
            at android.support.v4.app.Fragment.performCreateView(Fragment.java:1504)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:942)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1121)
            at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
            at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1484)
            at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:571)
            at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1129)
            at android.app.Activity.performStart(Activity.java:3791)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1620)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
            at android.app.ActivityThread.access$1500(ActivityThread.java:117)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:123)
            at android.app.ActivityThread.main(ActivityThread.java:3683)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:507)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
            at dalvik.system.NativeStart.main(Native Method)

我完全不知道出了什么问题,花了几个小时试图修复它但它仍在崩溃 我们的想法是创建菜单按钮(按下时)打开另一个活动(vudataactivity.java)。此活动必须能够使用arrayAdapter和list_item显示一些文本。

戴维斯建议后的错误:

10-26 14:15:33.924      327-327/app.sunshine.android.example.com.sunshine E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.NullPointerException
            at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:353)
            at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
            at android.widget.AbsListView.obtainView(AbsListView.java:1430)
            at android.widget.ListView.makeAndAddView(ListView.java:1745)
            at android.widget.ListView.fillDown(ListView.java:670)
            at android.widget.ListView.fillFromTop(ListView.java:727)
            at android.widget.ListView.layoutChildren(ListView.java:1598)
            at android.widget.AbsListView.onLayout(AbsListView.java:1260)
            at android.view.View.layout(View.java:7175)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
            at android.view.View.layout(View.java:7175)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
            at android.view.View.layout(View.java:7175)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
            at android.view.View.layout(View.java:7175)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
            at android.view.View.layout(View.java:7175)
            at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254)
            at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130)
            at android.widget.LinearLayout.onLayout(LinearLayout.java:1047)
            at android.view.View.layout(View.java:7175)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
            at android.view.View.layout(View.java:7175)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
            at android.view.View.layout(View.java:7175)
            at android.view.ViewRoot.performTraversals(ViewRoot.java:1140)
            at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:123)
            at android.app.ActivityThread.main(ActivityThread.java:3683)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:507)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
            at dalvik.system.NativeStart.main(Native Method)

1 个答案:

答案 0 :(得分:0)

我找到了。在PlaceHolderFragment.onCreateView()中执行此操作:

listView.setAdapter((android.widget.ListAdapter) dabarForecast);

您将数据转换为ListAdapter。这就是它崩溃的原因,因为dabarForecastArrayList,而不是适应者。你可能想这样做:

listView.setAdapter(vudataAdapter);

EDIT根据OP评论添加其他建议

致电时:

        ArrayAdapter<String> vudataAdapter =
                new ArrayAdapter<String>(
                        getActivity(),
                        R.layout.list_item_vudata,
                        R.id.list_item_vudata_textview,
                        dabarForecast);

Android期望您的布局文件是一个复杂的布局,其中最外面的项是一个容器(ViewGroup)。然后,它会在ID为TextView的{​​{1}}的容器内查看。但是,您的布局文件除了单个R.id.list_item_vudata_textview之外不包含任何内容。因此,您应该像这样创建适配器:

TextView