Sto lavorando all'app che utilizza getIntent() per leggere informazioni raggruppate. Vorrei impostare uno dei campi bundle su null, in modo che nei successivi resumes venga ricevuto un intento modificato, ma continuo a ottenere lo stesso intento da getIntent(). Ho notato che dopo aver premuto il tasto Indietro viene prodotto un nuovo intento, ma non altrimenti.Android getIntent() restituisce lo stesso intento in onResume() ogni volta. come cancellare il campo int in un pacchetto?
intent.getExtras().getInt("FLAG_FIELD") returns 1
intent.getExtras().setString("FLAG_FIELD", null);
ma quando l'attività riprende nuovamente getInt() restituisce comunque un valore anziché null. Non sono sicuro di come cancellare un campo Int in un pacchetto.
Aggiornamento appena provato:
intent.getExtras().putInt("FLAG_FIELD, -1);
Anche questo non funziona. Sembra che l'intento di getIntent() non possa essere modificato.
Aggiornamento: onResume() viene chiamato nel debugger per 3 volte di seguito prima che l'attività diventi visibile? Quindi anche se impostassi una bandiera qui sembra che sia difficile cambiare stato perché non posso dire quale chiamata di resume() sia l'ultima prima di una visualizzazione effettiva.
potete inserire le funzioni che utilizzano questo modo abbiamo un po ' contesto? – codeMagic
Sono un po 'confuso ma è necessario modificare il valore quando si utilizza 'intent.putExtra()', quindi verrà modificato la volta successiva che si ottiene l'intento – codeMagic
Bene, l'unica cosa da aggiungere è che sto controllando getIntent () campo in onResume() e quindi cancellando il flag ancora in onResume. La vera domanda è puoi cambiare bundle per getIntent() o è immutabile? sembra immutabile. –