¿Cómo saltar a la misma página desde diferentes páginas de Android para obtener el valor de retorno? ¿Cómo escribir en el resultado de actividad?
Cuando la MainActivity existente ingresa a SecondActivity, realiza ciertas operaciones en SecondActivity y luego necesita devolver el valor a MainActivity,
entonces puede usar onActivityResult() Este es el método a continuación. Presentaré el uso en detalle.
Pero antes de eso, hablemos del uso de la intención:
La clasificación principal de la intención incluye principalmente la intención implícita y la intención explícita. Las intenciones explícitas generalmente se usan principalmente para iniciar datos entre actividades en esta aplicación.
Las intenciones implícitas a menudo se usan para iniciar ciertas acciones específicas en el sistema, como realizar llamadas telefónicas o iniciar actividades entre aplicaciones.
En términos generales:
Intención explícita: llamar al método Intent.setComponent() o Intent.setClass() para especificar claramente el nombre del componente es una intención explícita. Especifica claramente cuál. componente al que se debe pasar la intención.
Intención implícita: una intención que no especifica explícitamente el nombre de un componente es una intención implícita. El sistema Android encontrará el componente más apropiado para manejar esta intención en función de la acción, la categoría y los datos
(URI y tipo de datos) establecidos en la intención implícita.
1. El código principal en MainActivity
(1) Cuando se requiere un valor de retorno, startActivityForResult(intent, REQUEST_CODE) se usa al iniciar otra actividad;
Tenga en cuenta que el segundo parámetro es el valor de tipo int de la solicitud. Este valor debe juzgarse con requestCode en el método onActivityResult()
A partir de esto, se puede juzgar si se trata de una actividad iniciada. .
(2) El segundo parámetro en el método onActivityResult() es la clave devuelta por SecondActivity.
El tercer parámetro es el valor correspondiente a la clave devuelta por SecondActivity.
final int RESULT_CODE=101;
final int REQUEST_CODE=1;
public void enterSecond(Ver vista) {
Intención =new Intent(this,SecondActivity.class);
startActivityForResult(intent, REQUEST_CODE);
}
@Override
protegido void onActivityResult(int requestCode, int resultCode, datos de intención) {
Log.i(TAG, "onActivityResult"+"requestCode"+requestCode+"\n resultCode="+resultCode);
if(requestCode==REQUEST_CODE) {
if(resultCode==RESULT_CODE) {
String resultado=data.getStringExtra("segundo");
textView.setText(resultado);
}
}
super.onActivityResult(requestCode, resultCode, datos);
}
2. Código en la clase SecondActivity:
El RESULT_CODE y la intención en este corresponden al segundo y tercer parámetro en el método onActivityResult() en el código anterior respectivamente.
final int RESULT_CODE=101;
public void closeButton(Ver vista) {
Intent intent=new Intent();
intent.putExtra("segundo", "¡Soy el segundo!");
setResult(RESULT_CODE, intención);
terminar();
}
3. Además, el segundo parámetro resultCode en el método onActivityResult() también tiene algunos parámetros que vienen con el sistema. Es decir, si la intención que iniciamos es una intención implícita, entonces podemos usarlo. RESULT_OK en la clase Actividad indica que la operación finalizó exitosamente.
Por ejemplo, para volver a llamar a la biblioteca del sistema, consulte el código:
final int CROP_PIC_REQUESTCODE = 23;
final int SELECT_PICTURE = 21;
if (resultCode == RESULT_OK && requestCode == SELECT_PICTURE) {
System.out.println("Llama a la galería para regresar, cierra la actividad");
Intención intención1 = nueva Intención ("com.android.camera.action.CROP");
intención1.setDataAndType(data.getData(), "image/*");
intent1.putExtra(" crop", "true");
intent1.putExtra("aspectX", 1);
intent1.putExtra("aspectY", 1 );
intent1.putExtra("salidaX", 80);
intent1.putExtra("salidaY", 80);
intent1.putExtra(" return-data", true);
startActivityForResult(intent1, CROP_PIC_REQUESTCODE);
}
Por supuesto, también podemos ver qué más es similar a RESULT_OK en el código fuente.
/** Resultado de la actividad estándar: operación cancelada */
public static final int RESULT_CANCELED = 0;
/** Resultado de la actividad estándar: operación exitosa. . */
public static final int RESULT_OK = -1;
/** Inicio de los resultados de la actividad definida por el usuario */
public static final int. RESULT_FIRST_USER = 1;
Resumen: Originalmente solo quería usar el método de mostrar la intención de iniciar la Actividad, pero luego amplié la intención implícita de iniciar la Actividad.
En resumen, cuando encuentres problemas, debes pensar más y no ceñirte a un solo punto, para que realmente puedas progresar.
Si tiene mejores sugerencias y opiniones, asegúrese de presentarlas y aprender unos de otros. El progreso común es el mayor deseo de nuestros expertos técnicos. ¡Estoy feliz de compartirlo con ustedes!