2012-06-15 5 views
142

Ich habe eine XML-Datei wie folgt erstellt:Ihr Inhalt muss ein Listview, deren id haben Attribut 'android.R.id.list'

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

und eine Aktivität:

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

Wie Du siehst, ich habe nichts anderes getan. Aber Ich bin immer den Fehler:

Your content must have a ListView whose id attribute is 'android.R.id.list'

Auch wenn ich die android:id="@+id/list" Linie in meinem xml.

Was ist das Problem?

Antwort

311

die ID Ihres Listview wie folgt umbenennen,

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

Da Sie ListActivity Ihre XML-Datei verwenden, muss das Schlüsselwort android angeben, während Sie eine ID zu erwähnen.

Wenn Sie eine benutzerdefinierte benötigen ListView dann stattdessen eine ListActivity von erweitern, müssen Sie einfach eine Activity erweitern und sollte ohne das Schlüsselwort android die gleiche ID haben.

+4

Doing fixed mein Problem, danke. Aber ich frage mich, ob Sie so freundlich wären, ein paar Worte darüber zu schreiben, wann ein ListView die ID "@android: id/list" haben muss und wann es in Ordnung ist, einen beliebigen Namen zu haben. Es liegt daran, dass ich nicht nur mein Problem beheben, sondern auch verstehen möchte, warum der Fix benötigt wurde. – RenniePet

+1

Funktioniert nicht. Derselbe Fehler. – Xeos

+3

Funktioniert. Aber warum diese "Spiele" mit id abhängig von der Ansicht impl? – ses

23

Sie sollten eine Listenansicht in Ihrer mainlist.xml Datei mit der ID als @android:id/list

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

dies Ihr Problem

6

ich Exact Art und Weise lösen sollte festgelegt dies basierend auf Feedback oben, da konnte ich nicht Holen Sie es zuerst zur Arbeit:

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

Inherit Aktivität Klasse statt ListActivity können Sie dieses Problem lösen.

public class ExampleActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 

     setContentView(R.layout.mainlist); 
    } 
} 
0

Eine andere Sache, die mich betroffen: Wenn Sie mehrere Testgeräte haben, stellen Sie sicher, dass Sie von dem Gerät verwendeten Änderungen am Layout machen. In meinem Fall habe ich einige Zeit damit verbracht, Änderungen an xmls im "layout" -Verzeichnis vorzunehmen, bis ich herausfand, dass mein größeres Telefon (auf das ich zum halben Test wechselte) xmls im Verzeichnis "layout-sw360dp" verwendete. Grrr!

0
<ListView android:id="@id/android:list" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:drawSelectorOnTop="false" 
     android:scrollbars="vertical"/> 
Verwandte Themen