web-dev-qa-db-fra.com

Votre contenu doit avoir un ListView dont l'attribut id est 'Android.R.id.list'

J'ai créé un fichier XML comme ceci:

<?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>

et une activité:

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);
    }
}

Comme vous le voyez, je n'ai rien fait d'autre. Mais je reçois l'erreur:

Votre contenu doit avoir un ListView dont l'attribut id est 'Android.R.id.list'

Même si j'ai la ligne Android:id="@+id/list" dans mon xml. 

Quel est le problème?

148
Isa Kuru

Renommez l'id de votre ListView comme ceci, 

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

Puisque vous utilisez ListActivity, votre fichier xml doit spécifier le mot-clé Android tout en mentionnant un ID. 

Si vous avez besoin d'une ListView personnalisée, alors, au lieu d'étendre une ListActivity, vous devez simplement étendre une Activity et avoir le même identifiant sans le mot clé Android .

328
Andro Selva

Vous devriez avoir une listview dans votre fichier mainlist.xml avec un identifiant comme @Android:id/list

<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"/>

cela devrait résoudre votre problème 

15
Aamirkhan

La façon exacte dont j'ai corrigé cela en fonction des commentaires ci-dessus car je ne pouvais pas le faire fonctionner au début

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

Hériter Activité Classe au lieu de ListActivity vous pouvez résoudre ce problème. 

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

Une autre chose qui m'a affecté: si vous avez plusieurs périphériques de test, assurez-vous de modifier la disposition utilisée par le périphérique. Dans mon cas, j'ai passé un certain temps à modifier le fichier XML dans le répertoire "layout" jusqu'à ce que je découvre que mon plus gros téléphone (que je passais à mi-parcours de l'essai) utilisait xml dans le répertoire "layout-sw360dp". Grrr!

0
RudyF