Sostituzione di frammenti in un'attività che non si rivolge aAttach, onCreate, onCreateView, ecc

Quindi ho questo pezzo di codice qui, sto creando un nuovo frammento e sostituendolo con un altro frammento. Questo funziona bene. Tuttavia, ho notato che nella prima row sta chiamando il constructor, ma non lo sono onAttach() , onCreate() ecc. Se wheressi distriggersre la seconda row, non functionrà poiché updateItem(URL) richiede un webView che viene avviato nella function onCreate ().

 DetailViewFragment detailFragment = new DetailViewFragment(); //detailFragment.updateItem(URL); FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.replace(R.id.displayList, detailFragment); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); ft.addToBackStack(null); ft.commit(); 

Apprezzerò qualsiasi aiuto che possa far funzionare la seconda linea senza commento.

  • Errore: Imansible trovare adb all'interno di SDK in Android Studio
  • Scrittura del codice Android compatibile all'indietro
  • Evitare altre applicazioni dalla schermata di acquisizione / logging
  • Android APK non genera quando si esegue l'esecuzione
  • Usa FFMPEG su Android
  • Ionic 2: come gestire il button di backup hardware che controlla la conferma di Exit in app
  • Crash con Android 4.1 con ArrayMap
  • Impostare una voce di menu come selezionata dal codice
  • Ottenere le coordinate e la width / altezza da una matrix
  • Cosa causa ContentResolver.query () di Android per restituire null?
  • Android - aggiunta di AppWidgets a un'attività
  • Menu personalizzato ActionBar overflow personalizzato
  • 3 Solutions collect form web for “Sostituzione di frammenti in un'attività che non si rivolge aAttach, onCreate, onCreateView, ecc”

    L' onAttach() , onCreate() , ecc non saranno chiamati finché FragmentManager ha effettivamente commesso la modifica. Quindi, qualche tempo dopo il commit() viene chiamato alla transizione. Se è necessario passare l'URL al Fragment dall'inizio, aggiungerlo al bundle di argomento del frammento prima di call commit() . Quindi sarai in grado di accedere all'URL nel tuo onCreate() o in altri methods del ciclo di vita. Quindi ti piacerebbe qualcosa di simile:

     DetailViewFragment detailFragment = new DetailViewFragment(); Bundle args = new Bundle(); args.putString(DetailViewFragment.INIT_URL, URL); detailFragment.setArguments(args); ft.replace(R.id.displayList, detailFragment); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); ft.addToBackStack(null); ft.commit(); 

    Ora nel tuo onCreate() puoi call getArguments() per get il bundle e recuperare l'URL che è stato passato dalla tua attività.

    onAttach(Context context) API Level 23 onAttach(Context context)
    onAttach(Activity activity) API Level 22 onAttach(Activity activity)

    Implementare entrambi i methods ha funzionato per me:

     @Override public void onAttach(Context context) { super.onAttach(context); } @Override public void onAttach(Activity activity) { super.onAttach(activity); } 

    Un'altra soluzione sarebbe call getSupportFragmentManager().executePendingTransactions(); subito dopo il commit. Attenzione che la transazione sia sincrona allora.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.