Come evitare di chiamare suCreateView quando il pulsante Indietro è premuto in frammento in Android

Nella mia applicazione, ho funzionalità di tabbar. In una scheda sto visualizzando i dati del server in lisview e facendo clic su quella pagina di dettaglio per quell’elemento dell’elenco sarà aperto in un nuovo frammento.

Ma quando preme il pulsante indietro da quella pagina di dettaglio, ogni volta che oncreateview chiama la pagina precedente, così ogni volta che listview crea e recupera nuovi dati del server. Quindi, come impedire tale e basta visualizzare lo stato precedente quando si preme il tasto indietro?

    So che è stato troppo lungo per dare questa risposta, ma quello che sto supponendo è che stai sostituendo il tuo frammento con l’altro. Intendo dire che stai usando

    ft.replace(R.id.realTabContent, fragment); 

    per passare ad un altro frammento che stai usando nel tuo onItemClick è così semplice utilizzare la soluzione

     ft.add(R.id.realTabContent, fragment); 

    invece di sostituire il tuo frammento.

    Comprendere la differenza tra sostituire e aggiungere . Questo risolverà il tuo problema.

    Sostituisci: sostituirà il frammento originale e ricrea la vista al tuo ritorno
    Aggiungi: aggiungerà solo un nuovo frammento da impilare.

    Spero che questo aiuti qualcuno che sta affrontando lo stesso problema …

    Non credo che evitare di chiamare suCreateView sia una buona idea, a parte se la funzione non viene chiamata, ci sarà un’eccezione, quindi NO, non dovresti. Invece di farlo, ti suggerisco di spostare il tuo “listview creato e nuovo recupera nuovi dati del server” in un altro posto dove puoi chiamare esplicitamente (quando vuoi, dove vuoi, onCreate() è un buon posto), non mettere in onCreateView() . Spero che questo ti aiuti.

    È necessario memorizzare nella cache gli oggetti dati oltre alle variabili di visualizzazione poiché i loro riferimenti devono essere aggiornati se si stanno recuperando dati dal server e non si desidera effettuare nuovamente una chiamata, quindi utilizzare la ramificazione per ramificare tale codice.

    Creare un metodo init () in cui si effettuano tutte le chiamate di inizializzazione e server e si dirama logicamente il metodo call to init () ogni volta che non si desidera chiamare init ().