您的内容必须具有ListView,其id属性为'android.R.id.list'

时间:2012-06-15 12:40:34

标签: android android-listview

我创建了一个像这样的xml文件:

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

和活动:

public class ExampleActivity extends ListActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mainlist);
    }
}

如你所见,我没有做任何其他事情。但我得到了错误:

  

您的内容必须包含一个ListView,其id属性为'android.R.id.list'

即使我的xml中有android:id="@+id/list"行。

有什么问题?

7 个答案:

答案 0 :(得分:331)

重命名ListView的ID,如下所示,

<ListView android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"/>

由于您使用的是ListActivity,因此您的xml文件必须在提及ID时指定关键字 android

如果您需要自定义ListView,那么您必须简单地扩展ListActivity而不是扩展Activity,而不应使用关键字 android

答案 1 :(得分:23)

您的mainlist.xml文件中应该有一个列表视图,ID为@android:id/list

<ListView
    android:id="@android:id/list"
    android:layout_height="wrap_content"
    android:layout_height="fill_parent"/>

答案 2 :(得分:15)

<ListView android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"/>

这应该可以解决你的问题

答案 3 :(得分:6)

确切的方法我根据上面的反馈修正了这个问题,因为我最初无法让它工作:

activity_main.xml中:

<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@android:id/list"
>
</ListView>

MainActivity.java:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addPreferencesFromResource(R.xml.preferences);

的preferences.xml:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceCategory
    android:key="upgradecategory"
    android:title="Upgrade" >
    <Preference
        android:key="download"
        android:title="Get OnCall Pager Pro"
        android:summary="Touch to download the Pro Version!" />
</PreferenceCategory>
</PreferenceScreen>

答案 4 :(得分:3)

继承活动类而不是 ListActivity ,您可以解决此问题。

public class ExampleActivity extends Activity  {

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.mainlist);
    }
}

答案 5 :(得分:1)

<Window x:Class="JGC_ngCMS_Win.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:JGC_ngCMS_Win.View"
    xmlns:VM="clr-namespace:JGC_ngCMS_Win.ViewModel"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
    <VM:MainWindowViewModel/>
</Window.DataContext>
<Window.Resources>
    <DataTemplate x:Key="View1Template" DataType="{x:Type VM:LoginViewModel}">
        <local:LoginView></local:LoginView>
    </DataTemplate>
    <DataTemplate x:Key="View2Template" DataType="{x:Type VM:MenuViewModel}">
        <local:MenuView />
    </DataTemplate>
    <DataTemplate x:Key="View3Template" DataType="{x:Type VM:UserModuleMapViewModel}">
        <local:UserModuleMapView />
    </DataTemplate>
</Window.Resources>
<Grid>
    <ContentPresenter Content="{Binding ViewModelsView.CurrentItem}" Grid.Row="1"/> 
    <ContentControl Content="{Binding  }">
        <ContentControl.Style>
            <Style TargetType="{x:Type ContentControl}">
                <Setter Property="ContentTemplate" Value="{StaticResource View1Template}" />
                <Style.Triggers>
                    <DataTrigger Binding="{Binding SwitchView}" Value="1">
                        <Setter Property="ContentTemplate" Value="{StaticResource View2Template}" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </ContentControl.Style>
    </ContentControl>
    <ContentControl Content="{Binding ViewModel}" />
</Grid>

答案 6 :(得分:0)

影响我的另一件事:如果您有多个测试设备,请确保您正在更改设备使用的布局。在我的情况下,我花了一些时间在“布局”目录中对xmls进行了更改,直到我发现我的大手机(我切换到测试的中途)在“layout-sw360dp”目录中使用了xmls。哎呀!