studio startactivity putextra intent desde boton activity abrir android android-intent

startactivity - ¿Cómo obtengo datos adicionales de la intención en Android?



putextra android (15)

Esto es para el adaptador, para la actividad solo necesita cambiar mContext a su nombre de Activty y para el fragmento necesita cambiar mContext para obtenerActividad ()

public static ArrayList<String> tags_array ;// static array list if you want to pass array data public void sendDataBundle(){ tags_array = new ArrayList(); tags_array.add("hashtag");//few array data tags_array.add("selling"); tags_array.add("cityname"); tags_array.add("more"); tags_array.add("mobile"); tags_array.add("android"); tags_array.add("dress"); Intent su = new Intent(mContext, ViewItemActivity.class); Bundle bun1 = new Bundle(); bun1.putString("product_title","My Product Titile"); bun1.putString("product_description", "My Product Discription"); bun1.putString("category", "Product Category"); bun1.putStringArrayList("hashtag", tags_array);//to pass array list su.putExtras(bun1); mContext.startActivity(su); }

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


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


Obtener diferentes tipos de extra de la intención

Para acceder a los datos de Intent debe saber dos cosas.

  • LLAVE
  • DataType de sus datos.

Hay diferentes métodos en la clase Intent para extraer diferentes tipos de tipos de datos. Se parece a esto

getIntent (). XXXX (KEY) o intent.XXX (KEY);


Entonces, si conoce el tipo de datos de su varibale que estableció en otherActivity, puede usar el método respectivo.

Ejemplo para recuperar Cadena en tu Actividad desde la Intención

String profileName = getIntent().getStringExtra("SomeKey");

Lista de diferentes variantes de métodos para diferentes tipos de datos

Puede ver la lista de métodos disponibles en Documentación oficial de Intent .


Acabo de publicar una respuesta here que cubre este tema con un poco más de detalle, incluidas algunas alternativas.

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

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

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

Puede pasar datos fácilmente a toda su aplicación utilizando la API de Vapor , por lo que espero que sea útil para usted y otros durante el desarrollo de la aplicación.


En la actividad receptora.

Bundle extras = getIntent().getExtras(); String userName; if (extras != null) { userName = extras.getString("name"); // and get whatever type user account id is }


En lugar de inicializar otro nuevo intento de recibir los datos, simplemente haga esto:

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


Pasa la intención con valor en la primera actividad:

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

Recibir la intención en la segunda actividad;

Inetent intent=getIntent(); String User=intent.getStringExtra("uid"); String Pass=intent.getStringExtra("pwd");

Usamos generalmente dos métodos para enviar el valor y obtener el valor. Para enviar el valor usaremos intent.putExtra("Key",Value); y durante el intento de recibir otra actividad usaremos intent.getStringExtra("Key"); Aquí, la clave puede ser cualquier palabra clave para identificar el valor que significa qué valor está compartiendo. Espero que funcione para usted.


Podemos hacerlo por medios simples:

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


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

Intent intent = getIntent();

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

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


Sólo una sugerencia:

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

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


Si está intentando obtener datos adicionales en fragmentos, puede intentar usar:

Coloque los datos usando:

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

Obtener datos utilizando:

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


Si se usa en un FragmentActivity, intente 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, solo necesitas llamar a getActivity() primero,

La segunda página extiende Fragmento :

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


También puedes hacerlo así.
// poner valor en la intención

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

// obtener valor de la intención

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


Puede obtener cualquier tipo de información adicional de la intención , sin importar si se trata de un objeto, una picadura o cualquier tipo de datos.

Bundle extra = getIntent().getExtras(); if (extra != null){ String str1 = (String) extra.get("obj"); // get a object String str2 = extra.getString("string"); //get a string }


// 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 i.e. john