Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java IllegalStateException:ArrayAdapter要求资源ID为TextView_Java_Android_Eclipse - Fatal编程技术网

Java IllegalStateException:ArrayAdapter要求资源ID为TextView

Java IllegalStateException:ArrayAdapter要求资源ID为TextView,java,android,eclipse,Java,Android,Eclipse,我运行了一次代码,它很好,我又运行了一次,现在每次都崩溃了。LogCat给了我这个: 04-11 03:15:57.293: D/dalvikvm(344): GC_EXTERNAL_ALLOC freed 68K, 52% free 2588K/5379K, external 1907K/2137K, paused 65ms 04-11 03:15:57.497: E/ArrayAdapter(344): You must supply a resource ID for a TextVi

我运行了一次代码,它很好,我又运行了一次,现在每次都崩溃了。LogCat给了我这个:

04-11 03:15:57.293: D/dalvikvm(344): GC_EXTERNAL_ALLOC freed 68K, 52% free 2588K/5379K,   external 1907K/2137K, paused 65ms
04-11 03:15:57.497: E/ArrayAdapter(344): You must supply a resource ID for a TextView
04-11 03:15:57.497: D/AndroidRuntime(344): Shutting down VM
04-11 03:15:57.497: W/dalvikvm(344): threadid=1: thread exiting with uncaught exception (group=0x40015560)
04-11 03:15:57.573: E/AndroidRuntime(344): FATAL EXCEPTION: main
04-11 03:15:57.573: E/AndroidRuntime(344): java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:347)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.widget.AbsListView.obtainView(AbsListView.java:1430)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.widget.ListView.measureHeightOfChildren(ListView.java:1216)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.widget.ListView.onMeasure(ListView.java:1127)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.view.View.measure(View.java:8313)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.widget.RelativeLayout.measureChild(RelativeLayout.java:566)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:381)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.view.View.measure(View.java:8313)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:386)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.view.View.measure(View.java:8313)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:581)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:365)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.view.View.measure(View.java:8313)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.view.View.measure(View.java:8313)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:531)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.view.View.measure(View.java:8313)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.view.View.measure(View.java:8313)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.view.ViewRoot.performTraversals(ViewRoot.java:839)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.os.Handler.dispatchMessage(Handler.java:99)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.os.Looper.loop(Looper.java:123)
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.app.ActivityThread.main(ActivityThread.java:3683)
04-11 03:15:57.573: E/AndroidRuntime(344):  at java.lang.reflect.Method.invokeNative(Native Method)
04-11 03:15:57.573: E/AndroidRuntime(344):  at java.lang.reflect.Method.invoke(Method.java:507)
04-11 03:15:57.573: E/AndroidRuntime(344):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-11 03:15:57.573: E/AndroidRuntime(344):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-11 03:15:57.573: E/AndroidRuntime(344):  at dalvik.system.NativeStart.main(Native Method)
04-11 03:15:57.573: E/AndroidRuntime(344): Caused by: java.lang.ClassCastException: android.widget.RelativeLayout
04-11 03:15:57.573: E/AndroidRuntime(344):  at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:340)
04-11 03:15:57.573: E/AndroidRuntime(344):  ... 35 more
04-11 03:17:31.694: I/Process(344): Sending signal. PID: 344 SIG: 9
我有三项活动:

package com.androidbook.triviaquiz;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class QuizMenuActivity extends QuizActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu);

        ListView menuList = (ListView) findViewById(R.id.listView1);

        String[] items = { getResources().getString(R.string.itemplay),
                getResources().getString(R.string.itemscores),
                getResources().getString(R.string.itemsettings),
                getResources().getString(R.string.itemhelp) };
        ArrayAdapter<String> adapt = new ArrayAdapter<String>(this, R.layout.menu, items);
        menuList.setAdapter(adapt);

        menuList.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            public void onItemClick(AdapterView<?> parent, View itemClicked, int position, long id) {

                // Note: if the list was built "by hand" the id could be used.
                // As-is, though, each item has the same id

                TextView textView = (TextView) itemClicked;
                String strText = textView.getText().toString();

                if (strText.equalsIgnoreCase(getResources().getString(R.string.itemplay))) {
                    // Launch the Game Activity
                    startActivity(new Intent(QuizMenuActivity.this, QuizGameActivity.class));
                } else if (strText.equalsIgnoreCase(getResources().getString(R.string.itemhelp))) {
                    // Launch the Help Activity
                    startActivity(new Intent(QuizMenuActivity.this, QuizHelpActivity.class));
                } else if (strText.equalsIgnoreCase(getResources().getString(R.string.itemsettings))) {
                    // Launch the Settings Activity
                    startActivity(new Intent(QuizMenuActivity.this, QuizSettingsActivity.class));
                } else if (strText.equalsIgnoreCase(getResources().getString(R.string.itemscores))) {
                    // Launch the Scores Activity
                    startActivity(new Intent(QuizMenuActivity.this, QuizScoresActivity.class));
                }

            }
        });


    }


}
有人能告诉我这个代码有什么问题吗?就像我之前说的,我所做的就是重新启动它。这些是你唯一需要弄清楚的东西吗,也许是清单

编辑:分辨率/布局/菜单

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".QuizSplashActivity" >

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:background="@drawable/th"
        android:orientation="vertical" >

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:background="#000000" >

            <ImageView
                android:id="@+id/ImageView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_alignParentTop="true"
                android:src="@drawable/quizicon" />

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:text="MAIN MENU"
                android:textColor="#ffffff"
                android:textSize="20pt" />

            <ImageView
                android:id="@+id/imageView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_alignParentTop="true"
                android:src="@drawable/quizicon" />
        </RelativeLayout>

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <ListView
                android:id="@+id/listView1"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:gravity="center">



            </ListView>

        </RelativeLayout>

    </LinearLayout>

</RelativeLayout>

如果您有textview ResourceId,则可以传递ResourceId来代替0


希望这对u有用。

您正在使用的ArrayAdapter构造函数需要一个仅由TextView组成的布局资源。它将尝试将列表的数据绑定到TextView。相反,它找到了一个相对物并失败了

看起来你给了它你的活动布局。也许你想给它一个不同的布局资源?如果没有,则应使用另一个构造函数,该构造函数同时获取布局资源和该布局中textview的id

ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, R.layout.list_item, R.layout.text, items);
ArrayAdapter=新的ArrayAdapter(上下文、R.layout.list\u项、R.layout.text、项);

例外情况非常明显,imho:ArrayAdapter要求资源ID为文本视图,请参阅文档:

一种ListAdapter,用于管理由任意数组支持的ListView 对象

默认情况下,此类希望提供的资源id引用 单一文本视图。如果您想使用更复杂的布局,请使用也具有字段id的构造函数。该字段id应引用较大布局资源中的TextView

无论引用的是什么TextView,它都将被数组中每个对象的toString()填充。可以添加自定义对象的列表或数组。重写对象的toString()方法,以确定将为列表中的项目显示哪些文本


要在阵列显示中使用文本视图以外的内容,例如ImageView,或者让toString()结果之外的一些数据填充视图,请重写以返回所需的视图类型。

您必须指定在
R.layout.菜单中使用的
TextView ID

更改此项:

ArrayAdapter<String> adapt = new ArrayAdapter<String>(this, R.layout.menu, items); 
ArrayAdapter adapt=新的ArrayAdapter(此,R.layout.menu,项);
为此:

ArrayAdapter<String> adapt = new ArrayAdapter<String>(this, R.layout.menu, R.id.YOUR_TEXT_VIEW, items); 
ArrayAdapter adapt=new ArrayAdapter(此,R.layout.menu,R.id.YOUR_TEXT_视图,项);
您可以使用“布局。支持\u简单\u微调器\u下拉菜单\u项”,如下所述

YourArrayAdapter = new ArrayAdapter<String>(this, R.layout.support_simple_spinner_dropdown_item);
YourArrayAdapter=新的ArrayAdapter(此为R.layout.support\u simple\u spinner\u dropdown\u项);

喜欢这个标题…给我们看
res/layout/menu.xml
请看跳跳虎,看吧Karakuri@VipulPurohit如果我创建一个没有任何文本视图的列表行,我如何在ArrayAdapter中实现?有什么办法吗?通过将类扩展到数组适配器,您可以简单地创建一个自定义的ArrayAdapter。在答案中添加更多详细信息,并对代码使用格式
ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, R.layout.list_item, R.layout.text, items);
ArrayAdapter<String> adapt = new ArrayAdapter<String>(this, R.layout.menu, items); 
ArrayAdapter<String> adapt = new ArrayAdapter<String>(this, R.layout.menu, R.id.YOUR_TEXT_VIEW, items); 
YourArrayAdapter = new ArrayAdapter<String>(this, R.layout.support_simple_spinner_dropdown_item);