簡體   English   中英

Android Studio:java.lang.RuntimeException:無法啟動活動ComponentInfo…:java.lang.ClassCastException:java.util.ArrayList

[英]Android Studio: java.lang.RuntimeException: Unable to start activity ComponentInfo…: java.lang.ClassCastException: java.util.ArrayList

完整錯誤:

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顯示一些文本。

Davids建議后出現錯誤:

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)

我找到了。 PlaceHolderFragment.onCreateView()您可以執行以下操作:

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

您正在將數據轉換為ListAdapter 這就是它崩潰的原因,因為dabarForecastArrayList ,而不是adapater。 您可能想這樣做:

listView.setAdapter(vudataAdapter);

編輯基於OP注釋添加其他建議

你打電話時:

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

Android希望您的布局文件是一個復雜的布局,其中最外面的項目是一個容器(ViewGroup)。 然后,在該容器內查找ID為R.id.list_item_vudata_textviewTextView 但是,您的布局文件只包含一個TextView 因此,您應該這樣創建適配器:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM