2010-11-27 7 views
4

:) Radiobuttons Mein Radiogroup 's Get dynamisch aus einer Arraylist erstellt wie so voll von Links (die meiner Haupttätigkeit befindet):entfernen dynamicallly Radiobuttons von einer Radiogroup in Android erstellt

Arraylist = { „hxxp: // Hello World .com "," hxxp: //helloworld2.net ", ...," hxxp: //whatever.com "}

dann habe ich eine neue Klasse namens" Links ", die von einer Menüschaltfläche in aufgerufen wird Meine Hauptaktivität, die ein schönes Layout mit einem Radiobuttton pro Link (in einem Scrollview) und einem "Go!" Schaltfläche am unteren Rand der Seite (relatives Layout).

Das alles funktioniert gut, bis auf eine Sache. Wenn Sie die Anwendung mit der Zurück-Schaltfläche verlassen und durch Klicken auf das Symbol im Android-Menü in die Anwendung zurückkehren, gelangen Sie zur Hauptaktivität und klicken dann im Menü auf die Schaltfläche "Verknüpfungen". Sie werden jedes Mal verdoppelt. ??? so wie:

link 0
Verbindung 1
Link 2
Link 0 (wieder)
Verbindung 1 (wieder)
Link 2 (wieder)

Dies hängt die Links zu der Unterseite jeden Mal kommst du zurück zur "Links" -Aktivität beim Verlassen. Gibt es einen Weg, wie ich eine Methode aufrufen kann, um alle Radio-Buttons zu löschen, die in der letzten Sitzung in der Links-Aktivität generiert wurden, bevor sie in die RadioGroup eingefügt werden? Ich versuchte, meine onPause() zu finish(); zu ändern, versuchte ich, den Cache mit RadioGroup.destroyDrawingCache(); freizugeben scheint nichts zu tun.

Antwort

0

Anstatt diese "alles löschen" -Ansatz (was sicherlich möglich ist) würde ich etwas anderes versuchen - legen Sie einen Haltepunkt in den Code, der zuerst Ihre Radio-Tasten füllt und drücken Sie die Zurück-Taste, dann zurück in die App, dann wieder zurück, wieder zurück in die App usw.

Wenn der Breakpoint bei jedem Wechsel in die Anwendung getroffen wird, liegt das Problem vor. Beheben Sie das Problem, indem Sie den Code zum Beispiel aus OnCreate verschieben, sodass er nur einmal zum Zeitpunkt der Erstellung der Aktivität aufgerufen wird. Wenn das nicht machbar ist, dann benutze eine Klassenvariable wie 'boolean mRadioButtonsPopulated', die kurz vor dem Popup-Code der Radioknöpfe überprüft wird und nach der (ersten) Radioknopfpopulation auf wahr gesetzt wird.

+0

Du hast Recht, ich es nur wünschen waren bessere Methoden für Radiogroup wie „refresh(); " oder "clearButtons()" was wäre toll für diejenigen, die automatisch die Schaltflächen aus, sagen wir, eine XML-Datei in der Projekt-APK generieren. – jeremy

0

Ich habe es, ich denke, der Ort in der Erinnerung verließ die ArrayList dort auch nachdem onDestroy() aufgerufen wurde. Alles, was ich getan habe, um das zu beheben, war Call ".clear();" auf dem ListArray direkt nach der Instanziierung in der Hauptaktivität meiner Android-Anwendung. Auf diese Weise wird jedes Mal, wenn die Anwendung geöffnet wird, [die Arraylist] instanziiert und dann gelöscht. Funktioniert wie ein Zauber :)

+0

Heh, das ist sicher - aber denke über die zusätzliche Verarbeitung nach, die benötigt wird, um jedes Mal die Optionsfeldgruppe neu aufzubauen. Ansonsten ist es Ihre Design-Wahl – kellogs

+0

Ist das ein Satz? "Denken Sie über die zusätzliche Verarbeitung nach, die benötigt wird, um jedes Mal, wenn die Optionsfeldgruppe neu erstellt wird"? Außerdem ist die Radiobutton-Gruppe ein direktes Ergebnis des Benutzers der Anwendung. Das bedeutet, dass Dinge aufgrund von Eingaben ein- oder ausgehen. Natürlich muss ich "jedes mal die Optionsfeldgruppe neu aufbauen". Vielen Dank. – jeremy

9

Sie Ihre Radio-Buttons entfernen können, die wie folgt unter Verwendung von dynamisch erstellt wurden:

RadioGroup rg=(RadioGroup)findViewById(R.id.radioGroupnew1); 
rg.clearCheck(); 
rg.removeAllViews();