Primo: questo è per un progetto già distribuito e richiede una soluzione che non "riscriva il modo in cui tutto funziona"!
Ho una sorta di "dettaglio record" che memorizza il RecordID corrispondente in una variabile statica. All'interno di questa schermata è possibile eseguire il drill down, che passa il RecordID in un bundle e viene recuperato dalla nuova attività per visualizzare e modificare le informazioni in modo appropriato. Tornare alla schermata dei dettagli originali funziona come previsto.
Ora devo incorporare una funzionalità che utilizza una nuova istanza di questa stessa schermata di dettaglio; ma se creo una nuova istanza di questa attività di dettaglio e passaggio sul RecordID e quindi tornare alla prima istanza della schermata dei dettagli, che RecordID è ora uguale a quello che ho passato al secondo istanza. Ciò è dovuto al fatto che RecordID è statico, suppongo.
Quando faccio questo RecordID non più statico, posso creare liberamente una nuova istanza della classe detail e andare avanti e indietro con i RecordID corretti in ogni istanza. Tuttavia ... questo lo rende così quando esegui il drill down in un'attività all'interno dei dettagli e ritorna, le variabili ora sono nulle.
Qual è il modo migliore per risolvere questa situazione?
- Non penso che l'utilizzo di
savedInstanceState
possa funzionare poiché l'attività non verrà effettivamente distrutta. Ho provato questo e il metodo non è nemmeno chiamato. - Ho pensato di fare
startActivityForResult
e di passare l'ID del record alla schermata dei dettagli, ma mi sembra orribile inefficiente.