Domanda

:) RadioButtons di mio RadioGroup vengono dinamicamente creati da un ArrayList (che risiede nella mia attività principale), piena di link in questo modo:

ArrayList = { "hxxp: //helloworld.com", "hxxp: //helloworld2.net", ..., "hxxp: //whatever.com"}

allora ho una nuova classe denominata "link" che viene chiamato da un pulsante menu nella mia attività principale che mette una bella disposizione con un radiobubtton per ogni link (in uno ScrollView) e un "go!" pulsante sulla parte inferiore della pagina (di layout relativa).

Il tutto funziona alla grande tranne per una cosa. Se si esce dall'applicazione utilizzando il tasto indietro, e tornare nell'applicazione facendo clic sulla icona nel menu di Android, si arriva a l'attività principale, fare clic sul pulsante "link" nel menu e sono raddoppiati ogni volta. ??? così:
collegare 0
Link 1
collegare 2
Link 0 (di nuovo)
Link 1 (di nuovo)
link 2 (di nuovo)

Questo aggiunge i collegamenti a fondo ogni volta che si torna alla "link" Attività di lasciare. C'è qualche modo per chiamare un metodo per cancellare tutti i pulsanti radio generati forma l'ultima sessione nell'attività link prima di metterli in RadioGroup? Ho provato a cambiare il mio onPause() a finish(); ho provato liberare la cache con RadioGroup.destroyDrawingCache(); nulla sembra farlo.

È stato utile?

Soluzione

Al posto di questo approccio 'tutto delete' (che è sicuramente possibile) vorrei provare qualcosa di diverso - posto un punto di interruzione nel codice che popola in primo luogo i pulsanti radio e premere il pulsante di nuovo, per poi tornare in app, poi di nuovo indietro, ancora una volta di nuovo in app, ecc

Se il punto di interruzione viene colpito ogni volta che si accende di nuovo nel applicazione, poi c'è il problema. Risolvere il problema spostando il codice da dove è a OnCreate per esempio, così è chiamato solo una volta al momento della creazione di attività. Se questo non è fattibile, quindi usare qualche variabile di classe come 'booleana mRadioButtonsPopulated' che viene verificata poco prima che il codice della popolazione pulsanti di opzione, e viene impostata su true dopo la (prima) la popolazione pulsante di successo.

Altri suggerimenti

È possibile rimuovere i tuoi pulsanti di scelta che sono stati creati dinamicamente utilizzando in questo modo:

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

ho preso, credo che il posto in memoria lasciato l'ArrayList lì anche dopo OnDestroy () è stato chiamato. Tutto quello che ho fatto per risolvere questo problema è stata chiamata ".clear ();" sulla ListArray destra dopo un'istanza nella principale attività della mia applicazione Android. In questo modo ogni volta che l'applicazione è aperta [l'arraylist] viene creata un'istanza poi cancellato. Funziona come un fascino:)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top