سؤال

لقد قمت بإنشاء تطبيق يحتوي على جزأين وفي كلا الجزأين توجد طرق عرض قائمة.يتم تمرير عرض القائمة الأول في الجزء 1 ويتم أيضًا تمييز العناصر.ولكن في الجزء الثاني، لا يتم تمرير عرض القائمة ولا يتم تمييز العناصر حتى.هل يمكن لأحد أن يقول لي ما هي المشكلة؟الشيء هنا هو أنني قمت للتو بالتحقق من ذلك من خلال وضع نفس فئة الجزء على كلا الشظيتين في ملف XML.إما أن يعمل كلاهما أو لا ينبغي أن يعمل كلاهما لأن أحدهما لا يختلف عن الآخر.ولكن لماذا تحدث هذه المشكلة؟

فئة شظيتي:

public class Fragment1 extends ListFragment{

    String[] countries = new String[] {
        "India",
        "Pakistan",
        "Sri Lanka",
        "China",
        "Bangladesh",
        "Nepal",
        "Afghanistan",
        "North Korea",
        "South Korea",
        "Japan"
    };

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        return inflater.inflate(R.layout.fragment1,container,false);
    }
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        ArrayAdapter<String> adapter=new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,countries);
        setListAdapter(adapter);
    }

    public void onListItemClick(ListView parent, View v,int position, long id)
    {
        Toast.makeText(getActivity(), "You have selected "+countries[position], Toast.LENGTH_SHORT).show();
    }

}

الملف الرئيسي.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <fragment
        android:name="com.example.listfragmentexample.Fragment1"
        android:id="@+id/fragment1"
        android:layout_weight="0.5"
        android:layout_width="0dp"
        android:layout_height="200dp" />

    <fragment 
        android:name="com.example.listfragmentexample.Fragment1"
        android:id="@+id/fragment2"
        android:layout_weight="0.5"
        android:layout_width="0dp"
        android:layout_height="300dp"/>
</LinearLayout>

جزء1.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <ListView
        android:id="@id/android:list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:drawSelectorOnTop="false"/>

</LinearLayout>
هل كانت مفيدة؟

المحلول

لذا، وفقًا للتعليمات البرمجية الخاصة بك، يبدو أنك تشير إلى نفس الشيء Fragment1 class لكلا الشظايا في الخاص بك main.xml.أفترض أن فئة النشاط الخاصة بك تحتوي فقط على setContentView() في ال عند الإنشاء () طريقة.نظرًا لأن كلا الجزأين موجودان في نشاط واحد، فهناك احتمال أن يتم تسليط الضوء على عرض واحد فقط في البداية.لقد تحققت للتو من هذا، لكنه يعمل بشكل جيد. Just drag the listview in the second fragment, بل ربما كنت تقوم بتمريرها.إذا كنت تريد أن يتم تمييز عرض القائمة الثاني الخاص بك، فأنا أخشى أنك قد تحتاج إلى ملفات xml منفصلة (على سبيل المثال fragment1 وfragment2) وفئات منفصلة للأجزاء والحصول على التركيز على أي منها تحتاج إليه أولاً عن طريق إضافة الكود التالي.

listView1 = (ListView)findViewById(R.id.listView1);
listView1.requestFocus();

حظ سعيد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top