web-dev-qa-db-ja.com

コンテンツには、id属性が「Android.R.id.list」である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);
    }
}

ご覧のとおり、私は他に何もしていません。しかし、私はエラーが発生しています:

コンテンツには、id属性が「Android.R.id.list」であるListViewが必要です

XMLにAndroid:id="@+id/list"行がありますが。

何が問題ですか?

149
Isa Kuru

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なしで同じIDを使用する必要があります。

332
Andro Selva

mainlist.xmlファイルには、IDが@Android:id/listのリストビューが1つ必要です。

<ListView
    Android:id="@Android:id/list"
    Android:layout_height="wrap_content"
    Android:layout_height="fill_parent"/>
23
Praveenkumar
<ListView Android:id="@Android:id/list"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"/>

これで問題が解決するはずです

15
Aamirkhan

最初に動作させることができなかったため、上記のフィードバックに基づいてこれを修正した正確な方法:

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>
6
Kevin

継承ActivityListActivityの代わりにクラスこの問題を解決できます。

public class ExampleActivity extends Activity  {

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.mainlist);
    }
}
3
Vicky
<ListView Android:id="@id/Android:list"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:drawSelectorOnTop="false"
        Android:scrollbars="vertical"/>
1
Makvin

私に影響を与えたもう1つのこと:複数のテストデバイスがある場合は、デバイスで使用されているレイアウトを変更していることを確認してください。私の場合は、「layout」ディレクトリでxmlを変更するのに少し時間を費やし、大きな電話(テストの途中で切り替えた)が「layout-sw360dp」ディレクトリでxmlを使用していることを発見しました。 Grrr!

0
RudyF