আপনার সামগ্রীতে অবশ্যই একটি তালিকাভিউ থাকতে হবে যার আইডি বৈশিষ্ট্যটি 'android.R.id.list'


156

আমি এর মতো একটি এক্সএমএল ফাইল তৈরি করেছি:

<?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"আমার এক্সএমএলটিতে আমার লাইন রয়েছে।

সমস্যাটা কি?

উত্তর:


345

আপনার লিস্টভিউয়ের আইডিটিকে নতুন নাম দিন,

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

যেহেতু আপনি ListActivityআপনার এক্সএমএল ফাইলটি ব্যবহার করছেন কোনও আইডির উল্লেখ করার সময় অবশ্যই অ্যান্ড্রয়েড কীওয়ার্ডটি নির্দিষ্ট করতে হবে ।

আপনার যদি কাস্টম দরকার হয় ListViewতবে এটিকে ListActivityবাড়ানোর পরিবর্তে Activityআপনার কীওয়ার্ড অ্যান্ড্রয়েড ছাড়া কেবল একটি প্রসারিত করতে হবে এবং একই আইডি থাকা উচিত ।


4
এটি করার ফলে আমার সমস্যার সমাধান হয়েছে, ধন্যবাদ। তবে আমি অবাক হয়েছি যে আপনি কোনও লিস্টভিউয়ের কাছে কখন "@ অ্যান্ড্রয়েড: আইডি / তালিকা" আইডি থাকতে হবে এবং যখন এটির একটি স্বেচ্ছামুলক নাম রাখা ঠিক হবে সে সম্পর্কে ব্যাখ্যা করার কয়েকটি শব্দ লিখতে আপনি যদি দয়াবান হন। এটি কারণ যে আমি কেবল আমার সমস্যা সমাধান করতে চাই না কেন এটি ঠিক করা দরকার কেন তাও বুঝতে।
রেনিপেট

4
কাজ করে। তবে কেন এই 'গেমস' আইডি সহ ভিউ ইমপ্লের উপর নির্ভর করে?
এসইস

1
আমি যুক্ত করার পরে @android, Eclipse বলেlist cannot be resolved or is not a field
user83039

1
একই সমস্যা এটি ত্রুটি দেখায়: ত্রুটি: প্রদত্ত নামের সাথে কোনও সংস্থান পাওয়া যায় নি ('আইডিতে' মান '@ অ্যান্ড্রয়েড: আইডি / তালিকা_ইনরেস্টেন্সেন্ট')।

1
এই দুর্দান্ত উত্তরের জন্য ধন্যবাদ!
ব্রিওলজি

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

তালিকার ক্রিয়াকলাপের পরিবর্তে উত্তরাধিকারী ক্রিয়াকলাপ শ্রেণি আপনি এই সমস্যাটি সমাধান করতে পারেন।

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

অন্য একটি জিনিস যা আমাকে প্রভাবিত করেছে: আপনার যদি একাধিক পরীক্ষার ডিভাইস থাকে তবে নিশ্চিত হয়ে নিন যে আপনি ডিভাইসটি ব্যবহার করেছেন বিন্যাসে পরিবর্তন আনছেন। আমার ক্ষেত্রে, আমি "লেআউট" ডিরেক্টরিতে এক্সএমএলস পরিবর্তন করতে কিছুক্ষণ সময় ব্যয় করেছি যতক্ষণ না আমি আবিষ্কার করেছি যে আমার বড় ফোনটি (যা আমি পরীক্ষার মধ্য দিয়ে অর্ধে চলে এসেছি) "লেআউট-sw360dp" ডিরেক্টরিতে xmls ব্যবহার করছে। ওফ!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.