将" list.setAdapter(适配器)添加到我的onCreate时,应用程序崩溃了。想法为什么?

时间:2015-12-08 01:58:47

标签: android-studio

我创建了一个包含RelativeLayout的新项目,其中ListView作为子项。我需要将数组的项添加到ListView。我已经做了很多寻找自己答案的搜索但是我能说的最好,我做的事与我在我读过的例子中看到的一样。所以我真的很困惑我错在哪里。

这是我活动的onCreate方法。当我注释掉调用setAdapter的行(在代码中用注释标记)时,应用程序加载正常(但它不显示列表项)。如果我没有对此进行评论并通过调试器运行它,我发现代码确实在这行之后继续 - 在应用程序崩溃之前深入到基础* .java文件中。

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_transaction);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    String[] myItems = {"Mark Johnson","Joe Smith","John Doe","James MacArthy"};

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.txnlayout,myItems);

    ListView list = (ListView) findViewById(R.id.txnListView); 
    list.setAdapter(adapter); //  <---comment out this line and the app loads fine.

}

activity_transaction包含以下ListView。

    <ListView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/txnListView"
    android:layout_alignParentTop="true"
    android:layout_centerInParent="true"
    android:clickable="false"/>

我继续尝试对此进行故障排除,因为它确实继续通过此行,所以我在setAdapter行之后查看了ListView对象的值。我看到它确实添加了arrayList中的项目 - 这是我认为适配器应该做的 - 正确吗?

enter image description here

logcat如下。我在那里看到有关ArrayAdapter需要TextView的一行。这是txnlayout.xml的内容(ArrayAdapter指向此文件)。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/txnListViewItem"/>
</RelativeLayout>

这是logcat。

12-09 19:24:16.997: W/Resources(28062): Converting to string: TypedValue{t=0x12/d=0x0 a=3 r=0x7f0d0055}
12-09 19:24:16.997: W/Resources(28062): Converting to string: TypedValue{t=0x12/d=0x0 a=3 r=0x7f0d0056}
12-09 19:24:17.047: W/Resources(28062): Converting to string: TypedValue{t=0x1/d=0x7f090084 a=-1 r=0x7f090084}
12-09 19:24:17.057: W/Resources(28062): Converting to string: TypedValue{t=0x12/d=0x0 a=3 r=0x7f0d0069}
12-09 19:24:17.057: W/Resources(28062): Converting to string: TypedValue{t=0x5/d=0x1 a=3 r=0x7f08000f}
12-09 19:24:17.057: W/Resources(28062): Converting to string: TypedValue{t=0x5/d=0x1 a=3 r=0x7f08000e}
12-09 19:24:17.057: W/Resources(28062): Converting to string: TypedValue{t=0x5/d=0x3801 a=1 r=0x10500cb}
12-09 19:24:17.067: W/Resources(28062): Converting to string: TypedValue{t=0x5/d=0x1001 a=3 r=0x7f080019}
12-09 19:24:17.067: W/Resources(28062): Converting to string: TypedValue{t=0x5/d=0x1001 a=3 r=0x7f08004c}
12-09 19:24:17.067: W/Resources(28062): Converting to string: TypedValue{t=0x5/d=0x1001 a=3 r=0x7f080019}
12-09 19:24:17.067: W/Resources(28062): Converting to string: TypedValue{t=0x5/d=0x1001 a=3 r=0x7f08004c}
12-09 19:24:17.067: W/Resources(28062): Converting to string: TypedValue{t=0x12/d=0x0 a=3 r=0x7f0d006a}
12-09 19:24:17.077: D/AbsListView(28062): Get MotionRecognitionManager
12-09 19:24:17.097: D/MoneyBox(28062): [Ljava.lang.String;@346af6ff
12-09 19:24:17.097: D/MoneyBox(28062): android.widget.ListView{31070ccc VFED.VC. ......I. 0,0-0,0 #7f0d006a app:id/txnListView}
12-09 19:24:17.097: D/MoneyBox(28062): android.widget.ArrayAdapter@37aecb15
12-09 19:24:17.097: D/Activity(28062): performCreate Call secproduct feature valuefalse
12-09 19:24:17.097: D/Activity(28062): performCreate Call debug elastic valuetrue
12-09 19:24:17.107: D/OpenGLRenderer(28062): Render dirty regions requested: true
12-09 19:24:17.137: W/Resources(28062): Converting to string: TypedValue{t=0x12/d=0x0 a=3 r=0x7f0d007f}
12-09 19:24:17.137: E/ArrayAdapter(28062): You must supply a resource ID for a TextView
12-09 19:24:17.137: D/AndroidRuntime(28062): Shutting down VM
12-09 19:24:17.137: E/AndroidRuntime(28062): FATAL EXCEPTION: main
12-09 19:24:17.137: E/AndroidRuntime(28062): Process: com.iresoft.moneybox, PID: 28062
12-09 19:24:17.137: E/AndroidRuntime(28062): java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:386)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.widget.AbsListView.obtainView(AbsListView.java:2823)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.widget.ListView.measureHeightOfChildren(ListView.java:1290)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.widget.ListView.onMeasure(ListView.java:1202)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.view.View.measure(View.java:18596)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:728)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:464)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.view.View.measure(View.java:18596)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5827)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:610)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:677)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.view.View.measure(View.java:18596)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5827)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.view.View.measure(View.java:18596)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5827)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1435)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.widget.LinearLayout.measureVertical(LinearLayout.java:721)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.widget.LinearLayout.onMeasure(LinearLayout.java:612)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.view.View.measure(View.java:18596)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5827)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.view.View.measure(View.java:18596)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5827)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1435)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.widget.LinearLayout.measureVertical(LinearLayout.java:721)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.widget.LinearLayout.onMeasure(LinearLayout.java:612)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.view.View.measure(View.java:18596)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5827)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2897)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.view.View.measure(View.java:18596)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2248)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1306)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1548)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1191)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6642)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:777)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.view.Choreographer.doCallbacks(Choreographer.java:590)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.view.Choreographer.doFrame(Choreographer.java:560)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:763)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.os.Handler.handleCallback(Handler.java:739)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.os.Handler.dispatchMessage(Handler.java:95)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.os.Looper.loop(Looper.java:145)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.app.ActivityThread.main(ActivityThread.java:5942)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at java.lang.reflect.Method.invoke(Native Method)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at java.lang.reflect.Method.invoke(Method.java:372)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
12-09 19:24:17.137: E/AndroidRuntime(28062):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
12-09 19:24:17.137: E/AndroidRuntime(28062): Caused by: java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.TextView
12-09 19:24:17.137: E/AndroidRuntime(28062):    at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:379)
12-09 19:24:17.137: E/AndroidRuntime(28062):    ... 50 more

1 个答案:

答案 0 :(得分:0)

确保在布局activity_transaction中,您有Listview,其id为txnListView