سؤال

لقد قمت بإنشاء عنصر تحكم مركب أشعله في أنشطة متعددة. يحتوي هذا التحكم على مجموعة من النصوص والأزرار، والأهم من ذلك قائمة ListView. أعرف XML في ملف تخطيط وفي المنشئ إلى عنصر تحكم المركب هذا، قمت بإزالة XML على هذا النحو: giveacodicetagpre.

يحتوي التصميم XML على قائمة ListView، وأيضا في المنشئ سيتم التعامل مع هذا التحكم المركب في إعداد المحول (محول My ArrayAdapter) ومصفوفة لذلك، مثل ذلك: giveacodicetagpre.

يتم استخدام عنصر التحكم المركب هذا في نشاطين - أحد هذه الأنشطة يدعو آخر. لا توجد علاقة بين النشاطين المقصودين.

هنا مشكلتي. عند إنشاء عنصر تحكم المركب في النشاط الأولي، يتم استدعاء الرمز أعلاه لتعيين محول عنصر التحكم هذا. بعد ذلك، عند إنشاء النشاط الثاني والتنقل إليه، يتم استدعاء المنشئ مرة أخرى على هذا المثيل الثاني من عنصر التحكم. يبدو أن هذا له تأثير جانبي على السيطرة الأولى الموجودة في النشاط الأولي. يبدو أن التحكم الثاني يبحث عن أجزاء المحول من جهاز التحكم الأول - لأنه أساسا لن يكون المحول الأول يعمل بمجرد استدعاء المنشئ إلى عنصر التحكم الثاني.

أعتقد أنه نظرا لأنني أشير إلى معرف مورد ListView في كلا عناصر التحكم في كلا عناصر التحكم، يقوم Android بإزالة المحول من ListView ListView عند إنشاء ListView ListSview - لأنه يرى كلا البرنامجين على أنه يحتوي على معرف المورد نفسه؟ هل هذا ممكن؟

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

لديه أي شخص عانى من هذا النوع من سلوك الاشتباك عند استخدام عناصر تحكم مركبة مخصصة تضخم من XML، وإعادة استخدامها في مثيلات متعددة؟

هل كانت مفيدة؟

المحلول

From my understanding Android should create a new instance of the widgets each time you inflate the xml. Do you have any static members in you compound widget class?

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