studio - ¿Cómo pasar un valor de una actividad a otra en Android?
putextra android para que sirve (6)
Creé una actividad con un botón y un AutuCompleteTextView [ACTV]. Ingresé un texto en ACTV y luego presiono el botón. Después de presionar el botón, quiero que la actividad vaya a otra actividad. En la segunda Actividad, solo quiero mostrar el texto ingresado en ACTV (de la primera actvidad) como un TextView.
Sé cómo comenzar la segunda actividad, que es la siguiente:
Intent i = new Intent(this, ActivityTwo.class);
startActivity(i);
He codificado esto para obtener el texto ingresado desde ACTV.
AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete);
CharSequence getrec=textView.getText();
Mi pregunta aquí es cómo pasar "getrec" (después de presionar el botón) de la primera actividad al segundo. Y luego recibir "getrec" en la segunda actividad.
Supongamos que he creado la clase de controlador de eventos para el botón usando "onClick (Ver v)"
Es simple si está pasando String X de A a B.
A -> B
En la actividad A
1) Crear intención
2) Ponga los datos en el intento usando el método de intención PutExtra
3) Comienza la actividad
Intent i = new Intent(A.this, B.class);
i.putExtra("MY_kEY",X);
En la actividad B
dentro deCrear método
1) Obtener objeto de intención
2) Obtener el valor almacenado con la tecla (MY_KEY)
Intent intent = getIntent();
String result = intent.getStringExtra("MY_KEY");
Esta es la forma estándar de enviar datos de A a B. puede enviar cualquier tipo de datos, podría ser int, boolean, ArrayList, String []. En función del tipo de datos que almacenó en la Actividad como clave, el método de recuperación del par de valores puede diferir, como si está pasando el valor int, entonces llamará
intent.getIntExtra("KEY");
Incluso puede enviar objetos Class pero para eso debe hacer que su objeto de clase implemente Serialzable o Interfaceface Parceable.
TransactionTooLargeException
Cuantos datos puede enviar a través del tamaño. Si los datos exceden cierta cantidad en tamaño, entonces puede obtener TransactionTooLargeException. Supongamos que está tratando de enviar un mapa de bits a través de la actividad y si el tamaño excede cierto tamaño de datos, entonces puede ver esta excepción.
Eso es trivial, use Intent.putExtra para pasar datos a la actividad que inicia. Use entonces Bundle.getExtra para recuperarlo.
Ya hay muchas de estas preguntas https://.com/search?q=How+to+pass+a+value+from+one+Activity+to+another+in+Android Asegúrese de utilizar la búsqueda primero la próxima vez .
Implementar de esta manera
String i="hi";
Intent i = new Intent(this, ActivityTwo.class);
//Create the bundle
Bundle b = new Bundle();
//Add your data to bundle
b.putString(“stuff”, i);
i.putExtras(b);
startActivity(i);
Comienza esa segunda activity
, dentro de esta class
para utilizar los valores de Bundle usa este código
Bundle bundle = getIntent().getExtras();
String text= bundle.getString("stuff");
Puedes usar Bundle para hacer lo mismo en Android
Crea la intención:
Intent i = new Intent(this, ActivityTwo.class);
AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete);
String getrec=textView.getText().toString();
//Create the bundle
Bundle bundle = new Bundle();
//Add your data to bundle
bundle.putString(“stuff”, getrec);
//Add the bundle to the intent
i.putExtras(bundle);
//Fire that second activity
startActivity(i);
Ahora en su segunda actividad recupere sus datos del paquete:
//Get the bundle
Bundle bundle = getIntent().getExtras();
//Extract the data…
String stuff = bundle.getString(“stuff”);
Sé que esto es tarde, pero si se necesita acceder y modificar la variable en múltiples intentos, la forma más fácil es usar el modo singleton. Definir una variable global, que sería accesible para todos los intentos.
Forma estándar de pasar datos de una actividad a otra:
Si desea enviar una gran cantidad de datos de una actividad a otra, puede colocar los datos en un paquete y luego pasarlos usando el método putExtra()
.
//Create the `intent`
Intent i = new Intent(this, ActivityTwo.class);
String one="xxxxxxxxxxxxxxx";
String two="xxxxxxxxxxxxxxxxxxxxx";
//Create the bundle
Bundle bundle = new Bundle();
//Add your data to bundle
bundle.putString(“ONE”, one);
bundle.putString(“TWO”, two);
//Add the bundle to the intent
i.putExtras(bundle);
//Fire that second activity
startActivity(i);
de lo contrario, puede usar putExtra()
directamente con la intención de enviar datos y getExtra()
para obtener datos.
Intent i=new Intent(this, ActivityTwo.class);
i.putExtra("One",one);
i.putExtra("Two",two);
startActivity(i);