¿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:
- Compartir intención con la opción Bluetooth solamente
- Compartir la imagen con la URL
- Configuración del corrector ortográfico en Android
- ¿Qué es START_STICKY, START_NOT_STICKY y START_REDELIVER_INTENT servicio
- ¿Por qué estoy recibiendo el error "MyActivity no es una clase inclusiva?"
Intent i=new Intent(context,SendMessage.class); i.putExtra("id", user.getUserAccountId()+""); i.putExtra("name", user.getUserFullName()); context.startActivity(i);
- ¿Cómo usar putExtra () con FLAG_ACTIVITY_REORDER_TO_FRONT en las aplicaciones de Android?
- Android PendingIntent. El botón Atrás cierra la aplicación en lugar de restaurar la actividad anterior de la pila
- La cámara no funciona / ahorra al usar Uri de caché como MediaStore.EXTRA_OUTPUT
- Cómo utilizar IntentCompat.makeRestartActivityTask ()?
- FLAG_ACTIVITY_NEW_TASK aclaración necesaria
- Actualizar la Galería después de eliminar un archivo de imagen?
- ¿Distinguir entre el tiempo de espera de la pantalla y el botón de encendido?
- Mensaje adicional de intención de Android versus variable estática
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.