Come passare i dati dall'attività in frammento

Ho alcuni problemi che passa i dati da un'attività a frammenti. Ho cercato intorno ma non ho trovato una risposta che soddisfa la mia situazione bene. Ho 2 class di frammento denominata CurrentFragment.java e HistoryFragment.java . Inizialo come tabulazioni in un'attività.

  Tab tab = actionBar.newTab() .setText(R.string.tab_current) .setTabListener(new TaskitTabListener<CurrentFragment>( this, "current", CurrentFragment.class)); actionBar.addTab(tab); tab = actionBar.newTab() .setText(R.string.tab_history) .setTabListener(new TaskitTabListener<HistoryFragment>( this, "history", HistoryFragment.class)); actionBar.addTab(tab); 

Mi è stato detto di usare setArguments nell'attività e getArguments nei frammenti. Ma in questa situazione, come faccio ad get oggetti frammento nell'attività? Non posso utilizzare getFragmentManager().findFragmentById() poiché i frammenti vengono aggiunti in modo programmato.

  • Arti grafiche di image personalizzate di Android RatingBar
  • Rimuovere il SearchIcon come suggerimento nel searchView
  • Distinguere tra spingere il button "casa" e aprire un'altra attività
  • Cliccando su un elemento in modo programmato in RecyclerView
  • Come convertire int in String (?) In JNI?
  • Google Maps v2 Marker zOrdering - Impostare in alto
  • Inoltre, trovo alcuni post che dicono che potrei utilizzare getActivity() in frammenti per accedere ai dati nel contenitore Attività, ma per me continua a restituire null. Qualcuno ha un esempio funzionante di questo?

  • INSTALL_FAILED_DUPLICATE_PERMISSION ... C2D_MESSAGE
  • Come si imposta la visualizzazione tabulazione per scorrere?
  • Nomi di interface di networking per i dispositivi Android
  • Google Maps Android MapView v2: disabilitare lo zoom
  • Come mostrare il valore di EditText in listview each volta cliccando su android
  • Come forzare PopupMenu per sovrapporsi all'ancora?
  • One Solution collect form web for “Come passare i dati dall'attività in frammento”

    [EDIT] Ho aggiornato la mia risposta per rispondere meglio alla tua domanda.

    È inoltre ansible recuperare i frammenti per tag con getFragmentManager().findFragmentByTag("tag") . Attenzione, però, se la scheda non è stata ancora visualizzata, il frammento non esisterà.

     CurrentFragment curFrag = (CurrentFragment) getFragmentManager().findFragmentByTag("current"); if(curFrag == null) { // The user hasn't viewed this tab yet } else { // Here's your data is a custom function you wrote to receive data as a fragment curFrag.heresYourData(data) } 

    Se si desidera che il frammento estrarre i dati dall'attività, l'attività ha un'triggerszione di un'interface definita dal frammento. Nella funzionalità di ciclo di vita di onAttach(Activity activity) per i frammenti si ottiene l'accesso all'attività che ha creato il frammento in modo da poter eseguire l'attività come interface definita e fare chiamate di function. Per fare questo, metti l'interface nel tuo frammento come questo (puoi anche fare l'interface proprio file se vuoi condividere la stessa interface tra molti frammenti):

     public interface DataPullingInterface { public String getData(); } 

    Quindi implementa l'interface nella tua attività come questa:

     public class MyActivity extends Activity implements DataPullingInterface { // Your activity code here public String getData() { return "This is my data" } } 

    Infine nel tuo onAttach(Activity activity) in CurrentFragment, esegui l'attività che ricevi come interface creata in modo da poter call queste funzioni.

     private DataPullingInterface mHostInterface; public void onAttach(Activity activity) { super.onAttach(activity); if(D) Log.d(TAG, "onAttach"); try { mHostInterface = (DataPullingInterface) activity; } catch(ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement DataPullingInterface"); } String myData = mHostInterface.getData(); } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.