¿Cómo obtengo datos adicionales de intenciones en Android?

¿Cómo puedo enviar datos de una actividad (intención) a otra?

Yo uso este código para enviar datos:

Intent i=new Intent(context,SendMessage.class); i.putExtra("id", user.getUserAccountId()+""); i.putExtra("name", user.getUserFullName()); context.startActivity(i); 

Primero, obtenga la intención que ha iniciado su actividad usando el método getIntent() :

 Intent intent = getIntent(); 

Si los datos adicionales se representan como cadenas, puede utilizar el intent.getStringExtra(String name) . En tu caso:

 String id = intent.getStringExtra("id"); String name = intent.getStringExtra("name"); 

En la actividad de recepción

 Bundle extras = getIntent().getExtras(); String userName; if (extras != null) { userName = extras.getString("name"); // and get whatever type user account id is } 
 // How to send value using intent from one class to another class // class A(which will send data) Intent theIntent = new Intent(this, B.class); theIntent.putExtra("name", john); startActivity(theIntent); // How to get these values in another class // Class B Intent i= getIntent(); i.getStringExtra("name"); // if you log here i than you will get the value of i ie john 

Agregar

Establecer datos

 String value = "Hello World!"; Intent intent = new Intent(getApplicationContext(), NewActivity.class); intent.putExtra("sample_name", value); startActivity(intent); 

Obtener datos

 String value; Bundle bundle = getIntent().getExtras(); if (bundle != null) { value = bundle.getString("sample_name"); } 

En lugar de inicializar otro nuevo Intent para recibir los datos, haz esto:

 String id = getIntent().getStringExtra("id"); 

Si se utiliza en una FragmentActivity, pruebe esto:

La primera página extiende FragmentActivity

 Intent Tabdetail = new Intent(getApplicationContext(), ReceivePage.class); Tabdetail.putExtra("Marker", marker.getTitle().toString()); startActivity(Tabdetail); 

En el fragmento, sólo tiene que llamar a getActivity() primero,

La segunda página se extiende Fragmento :

 String receive = getActivity().getIntent().getExtras().getString("name"); 

Si está tratando de obtener datos adicionales en fragmentos, puede probar con:

Coloque los datos utilizando:

 Bundle args = new Bundle(); args.putInt(DummySectionFragment.ARG_SECTION_NUMBER); 

Obtener datos usando:

 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { getArguments().getInt(ARG_SECTION_NUMBER); getArguments().getString(ARG_SECTION_STRING); getArguments().getBoolean(ARG_SECTION_BOOL); getArguments().getChar(ARG_SECTION_CHAR); getArguments().getByte(ARG_SECTION_DATA); } 

Sólo una sugerencia:

En lugar de usar "id" o "nombre" en su i.putExtra ("id" …..), sugeriría, cuando tiene sentido, usar los campos estándar actuales que se pueden usar con putExtra (), es decir Intent.EXTRA_something.

Se puede encontrar una lista completa en Intent (Android Developers).

También puedes hacer esto
// poner valor en intención

  Intent in = new Intent(MainActivity.this, Booked.class); in.putExtra("filter", "Booked"); startActivity(in); 

// obtener el valor de la intención

  Intent intent = getIntent(); Bundle bundle = intent.getExtras(); String filter = bundle.getString("filter"); 

Podemos hacerlo por medios sencillos:

En FirstActivity:

 Intent intent = new Intent(FirstActivity.this, SecondActivity.class); intent.putExtra("uid", uid.toString()); intent.putExtra("pwd", pwd.toString()); startActivity(intent); 

En SecondActivity:

  try { Intent intent = getIntent(); String uid = intent.getStringExtra("uid"); String pwd = intent.getStringExtra("pwd"); } catch (Exception e) { e.printStackTrace(); Log.e("getStringExtra_EX", e + ""); } 

Acabo de publicar una respuesta aquí que cubre este tema en un poco más de detalle, incluyendo algunas alternativas.

Utiliza Vapor API , un nuevo framework inspirado en jQuery Android que escribí para simplificar el desarrollo de Android. Echa un vistazo al ejemplo en esa respuesta para saber cómo puedes pasar fácilmente datos entre actividades.

También demuestra VaporIntent , que le permite encadenar las llamadas de método y utilizar el método .put(...) sobrecargado:

 $.Intent().put("data", "myData").put("more", 568)... 

Usted puede pasar fácilmente datos alrededor de su aplicación entera usando Vapor API , así que esperemos que sea útil para usted y otros durante el desarrollo de la aplicación.

  • Pid para el proceso que envió una intención
  • Receptor de difusión que no recibe la intención
  • ¿Enviar una difusión ordenada localmente (dentro de mi proceso)?
  • Actividad exportada = false en el selector de actividades
  • Acuerdo de Android con muchas intenciones
  • Llamar a una actividad dentro de un módulo de biblioteca de android
  • ¿Cómo conectar profundamente mi aplicación android a paytm y la aplicación freecharge?
  • Android.Share a las redes sociales
  • Convertir un sitio web en una aplicación de Android
  • Cómo establecer FileProvider para el archivo en el directorio de caché externo
  • ¿Por qué obtenemos estas intenciones "inválidas"?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.