आपकी सामग्री में एक सूची दृश्य होना चाहिए जिसका आईडी गुण 'android.R.id.list' है


156

मैंने इस तरह एक 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);
    }
}

जैसा कि आप देख रहे हैं, मैंने कुछ और नहीं किया है। लेकिन मुझे त्रुटि मिल रही है:

आपकी सामग्री में एक सूची दृश्य होना चाहिए जिसका आईडी गुण 'android.R.id.list' है

हालांकि android:id="@+id/list"मेरे xml में लाइन है।

समस्या क्या है?

जवाबों:


345

इस तरह अपने ListView की आईडी का नाम बदलें,

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

चूंकि आप ListActivityअपनी xml फ़ाइल का उपयोग कर रहे हैं, तो ID का उल्लेख करते समय कीवर्ड Android को निर्दिष्ट करना होगा ।

यदि आपको एक कस्टम की आवश्यकता है , तो ListViewए का विस्तार करने के बजाय ListActivity, आपको बस एक विस्तार Activityकरना होगा और कीवर्ड एंड्रॉइड के बिना एक ही आईडी होना चाहिए ।


4
ऐसा करने से मेरी समस्या ठीक हो गई, धन्यवाद। लेकिन मुझे आश्चर्य है कि यदि आप स्पष्टीकरण के कुछ शब्दों को लिखने के लिए इतने दयालु होंगे कि जब एक ListView के पास आईडी "@android: id / सूची" होनी चाहिए और जब इसके लिए एक मनमाना नाम होना ठीक है। यह इसलिए है क्योंकि मैं न केवल अपनी समस्या को ठीक करना चाहता हूं, बल्कि यह भी समझना चाहता हूं कि सुधार की आवश्यकता क्यों थी।
रेन्नीपेट

4
काम करता है। लेकिन क्यों इस 'खेल' आईडी के दृश्य पर निर्भर करता है?
Ses

1
जब मैं जोड़ता हूं @android, तो ग्रहण कहता हैlist cannot be resolved or is not a field
user83039

1
एक ही समस्या यह त्रुटि दिखाती है: त्रुटि: कोई भी संसाधन नहीं मिला जो दिए गए नाम से मेल खाता हो ('आईडी' में मान के साथ @android: id / list_interestsent ')।

1
इस बेहतरीन उत्तर के लिए धन्यवाद!
1:30 पर शराब की भठ्ठी

23

आपके पास mainlist.xmlआईडी के साथ एक फ़ाइल सूची होनी चाहिए@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"/>

इससे आपकी समस्या का समाधान हो जाना चाहिए


8

सटीक तरीका मैंने इसे फीडबैक के आधार पर तय किया क्योंकि मैं इसे पहले काम करने के लिए नहीं पा सकता था:

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

ListActivity की जगह Inherit Activity Class आप इस समस्या को हल कर सकते हैं।

public class ExampleActivity extends Activity  {

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.mainlist);
    }
}

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

0

एक अन्य चीज जिसने मुझे प्रभावित किया है: यदि आपके पास कई परीक्षण उपकरण हैं, तो सुनिश्चित करें कि आप उपकरण द्वारा उपयोग किए गए लेआउट में परिवर्तन कर रहे हैं। मेरे मामले में, मैंने "लेआउट" निर्देशिका में xmls में बदलाव करते हुए कुछ समय बिताया जब तक मुझे पता नहीं चला कि मेरा बड़ा फोन (जिसे मैं परीक्षण के माध्यम से आधे रास्ते में बदल दिया गया था) "लेआउट- sw360dp" निर्देशिका में xmls का उपयोग कर रहा था। ओह!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.