Frage

Ich habe eine zusammengesetzte Kontrolle erstellt, die ich in mehreren Aktivitäten wiederverwendet habe. Dieses Steuerelement enthält eine Reihe von Textviews und Tasten und vor allem eine ListView. Ich definiere den XML in einer Layoutdatei und in dem Konstruktor zu dieser Verbundsteuerung, füge ich das XML als solches auf, füge: generasacodicetagpre.

Das Layout XML enthält eine ListView, und auch im Konstruktor wird diese zusammengesetzte Steuerung einrichten, um den Adapter einzubauen (mein Adapter erweitert ArrayAdapter) und Array dafür, wie so: generasacodicetagpre.

Diese zusammengesetzte Steuerung wird in zwei Aktiviten verwendet - eines dieser Aktivitäten ruft einen anderen an. Es ist keine Beziehung zwischen den beiden Aktivitäten bestimmt.

Hier ist mein Problem. Wenn die Verbindungssteuerung in der Anfangsaktivität erstellt wird, wird der obige Code aufgerufen, um den Adapter dieses Steuerelements einzustellen. Wenn dann die zweite Aktivität erstellt und navigiert wird, wird der Konstruktor erneut in dieser zweiten Instanz des Steuerelements aufgerufen. Dies scheint einen Nebeneffekt auf die erste Steuerung in der ersten Aktivität zu haben. Die zweite Steuerung scheint den Teilen des Adapters von der ersten Steuerung zu überschreiben - da der erste Adapter grundsätzlich nicht funktionsfähig ist, sobald der Konstruktor an der zweiten Steuerung aufgerufen wird.

Es ist meine Vermutung, dass ich auf die Ressourcen-ID der ListView in beiden Steuerelementen referenziere, und Android entsteht den Adapter aus der ersten ListView, wenn die zweite ListView erstellt wird - da er beide ListViews als dieselbe Ressourcen-ID anzeigt? Ist das möglich?

Ich hatte zuvor Probleme hatte, in diesem gleichen Fall - wo mehrere Verbundsteuerungen in verschiedenen Aktivitäten (und mehrmals in einer einzigen Aktivität) verwendet werden - und das Problem sollte auf das Aufblasen von XML-Layout. Meine Lösung für das vorherige Problem bestand darin, die Aufblasung aus dem Layout loszuwerden und stattdessen die Objekte durch Code zu erstellen. Dies war akzeptabel, da diese zusammengesetzten Kontrollen viel einfacher waren und nur zwei Ansichten enthielten - aber ich fühle mich in dem obigen ListView-Fall, wo meine Verbindungssteuerung mindestens zehn Ansichten darin hat, ist keine akzeptable Lösung, um jede Ansicht im Code zu definieren. Ich brauche das Layout XML.

Hat jemals jemand diese Art von Einkämpfungsverhalten erlebt, wenn benutzerdefinierte Verbundsteuerungen verwendet werden, die von XML aufgeblasen sind, und in mehreren Fällen wiederverwendet werden?

War es hilfreich?

Lösung

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?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top