2012-02-03 20 views
6

Por ejemplo, en una vista de lista alojada por ListActivity, cuando el usuario hace clic en un elemento de la lista, se iniciará una nueva actividad y se transferirá la actividad previa datos a la nueva actividad, como a continuación:cómo transferir datos extra de un fragmento a otro a través de la actividad

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); 
    } 
} 

cómo debe ser Si utilizo fragmentos? Quiero decir que si tengo una actividad que albergan 2 fragmentos, y hacer transacciones fragmentos, como a continuación:

// 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(); 

¿Cómo puedo transferir datos adicionales de un fragmento a otro fragmento través de la actividad de acogida?

Sé que en la página web de desarrolladores de Android, hay una good document de cómo usar el fragmento y la forma de comunicarse con la actividad, pero no hay ninguna descripción sobre cómo transferir datos de un fragmento a otro ....

+1

posible duplicado de [Android: pasar datos (extras) a un fragmento] (http://stackoverflow.com/questions/15392261/android-pass-dataextras-to-a-fragment) –

Respuesta

22

utilice

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

¿Quiere decir que no Necesito definir la interfaz en fragmento y dejar que la actividad del host implemente la interfaz que establece una comunicación entre fragmento y host acvitity ... en su lugar, ¿puedo usar tu código para navegar directamente al siguiente fragmento? –

+0

sí, puede usarlo directamente .... –

+0

@ no está en blanco Puede arrojar más luz sobre .navigateTo (fragmento); estudio de Android no parece reconocer este – archon92

1

de la actividad se envían datos con la intención como:

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

y en el método Fragmento onCreateView:

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

Espero que sea de ayuda para usted.

Cuestiones relacionadas