2012-02-03 1 views
6

Ad esempio, in una vista elenco ospitato da ListActivity, quando l'utente clicca su un elemento della lista, sarà lanciata una nuova attività, e precedente il trasferimento di attività in più dati per la nuova attività come di seguito:come trasferire i dati in più da un frammento all'altro attraverso l'attività

public class Notepadv2 extends ListActivity { 
    ... 

    @Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 
     super.onListItemClick(l, v, position, id); 

     Intent i = new Intent(this, NoteEdit.class); 
     i.putExtra(NotesDbAdapter.KEY_ROWID, id); 
     startActivityForResult(i, ACTIVITY_EDIT); 
    } 
} 

Come dovrebbe essere Se utilizzo i frammenti? Voglio dire, se ho un'attività che ospitano 2 frammenti, ed effettuare transazioni frammenti come di seguito:

// Create new fragment and transaction 
Fragment newFragment = new ExampleFragment(); 
FragmentTransaction transaction = getFragmentManager().beginTransaction(); 

// Replace whatever is in the fragment_container view with this fragment, 
// and add the transaction to the back stack 
transaction.replace(R.id.fragment_container, newFragment); 
transaction.addToBackStack(null); 

// Commit the transaction 
transaction.commit(); 

come posso trasferire i dati in più da un frammento all'altro frammento attraverso l'attività di accoglienza?

So sulla pagina web degli sviluppatori Android, c'è un good document di come utilizzare frammento e come comunicare con l'attività, ma non esiste una descrizione su come trasferire i dati da un frammento all'altro ....

+1

possibile duplicato di [Android: passare dati (extra) a un frammento] (http://stackoverflow.com/questions/15392261/android-pass-dataextras-to-a-fragment) –

risposta

22

utilizzare

Bundle data = new Bundle(); 
data.putString("name",value); 
Fragment fragment = new nameOfFragment(); 
fragment.setArguments(data); 
.navigateTo(fragment); 
+0

Vuoi dire che non lo faccio è necessario definire l'interfaccia in frammento e lasciare che l'attività dell'host implementa l'interfaccia che imposta una comunicazione tra frammento e disponibilità dell'host ... invece, posso usare il tuo codice per navigare direttamente al prossimo frammento? –

+0

sì, è possibile utilizzarlo direttamente .... –

+0

@its non vuoto Puoi per favore gettare più luce su .navigateTo (frammento); Android Studio sembra non riconoscere questo – archon92

1

dall'attività di inviare dati con l'intento di:

Bundle bundle = new Bundle(); 
bundle.putString("key", "value"); 
// set Fragmentclass Arguments 
Fragmentclass fragmentobj = new Fragmentclass(); 
fragmentobj.setArguments(bundle); 

e nel metodo Frammento onCreateView:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    String strtext = getArguments().getString("key");  
    return inflater.inflate(R.layout.fragment, container, false); 
} 

Spero che sia di aiuto per voi.