为什么我的Android应用程序一直告诉我,我已经定义了ListView id?

时间:2011-01-22 08:54:22

标签: android listview

每当我尝试运行我的应用程序时,都会抛出以下异常:

01-22 00:40:51.868:ERROR / AndroidRuntime(2219):java.lang.RuntimeException:无法启动活动ComponentInfo {[Redacted]}:java.lang.RuntimeException:您的内容必须具有其ID为ListView的ListView属性是'android.R.id.list'

以下是有问题的ListView的标记:

<ListView 
 android:id="@+id/list" 
 android:layout_width="fill_parent" 
 android:layout_height="fill_parent"
 android:dividerHeight="1px"></ListView>

那么,既然id被明确定义为“list”,那么这里给出了什么?在过去的几个小时里,我已经多次运行我的代码,试图找出原因,我很难过。任何人都可以提供任何指示吗?

4 个答案:

答案 0 :(得分:5)

您的班级ComponentInfo可能正在扩展ListActivity,因此请确保您的ListView对象必须在布局XML文件中包含以下属性:

android:id="@android:id/list"

答案 1 :(得分:3)

实际上“android.R.id.list”和“R.id.list”之间存在差异

<ListView android:id="@android:id/list" />

列表不同
<ListView android:id="@+id/list" />

第一个在android框架中有一个预定义的id,这意味着有些东西会在后台自动生成。请考虑以下示例:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="match_parent"
    android:height="match_parent">

    <ListView
        android:width="match_parent"
        android:height="match_parent"
        android:id="@android:id/list" />

    <TextView
        android:width="wrap_content"
        android:height="wrap_content"
        android:id="@android:id/empty"
        android:text="You don\'t have any items yet." />
</LinearLayout>

鉴于XML中的上述布局以及相应的java类扩展了ListActivity,当列表没有任何项目时,将自动显示TextView,当列表第一次显示时,它也会自动隐藏项目

答案 2 :(得分:0)

我猜你有意外导入android.R包。

删除导入,你应该没问题。

答案 3 :(得分:-1)

托德,你好 无论你用XML给listview的id 你希望在java类中声明。

XML中的示例代码       &安培;在java类

ListView list =(ListView)findViewById(R.id.list);