Usar onactivityresult android

Quiero llamar a un método de mainactivity en otras actividades. Para eso, he investigado mucho y encontré que usar OnActivityResult es la mejor opción. ¿Puede alguien explicar cómo usar este método con la ayuda de un ejemplo? He pasado por preguntas similares pero las encontré confusas. ¡Gracias!

EDIT: Tengo una actividad de diálogo personalizada en mi aplicación. Pide a los usuarios si quieren iniciar un nuevo juego o no y tiene dos botones sí y no. Quiero implementar el método anterior sólo para obtener el botón presionado.

Definir constante

 public static final REQUEST_CODE = 1; 

Llamar a su actividad de diálogo personalizado con la intención

 Intent intent = new Intent(Activity.this, CustomDialogActivity.class); startActivityForResult(intent , REQUEST_CODE); 

Ahora use onActivityResult para recuperar el resultado

 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { try { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { String requiredValue = data.getStringExtra("Key"); } } catch (Exception ex) { Toast.makeText(Activity.this, ex.toString(), Toast.LENGTH_SHORT).show(); } } 

En la actividad de diálogo personalizado utilice este código para establecer el resultado

 Intent intent = getIntent(); intent.putExtra("key", value); setResult(RESULT_OK, intent); finish(); 

Aquí está el ejemplo por favor verifique http://developer.android.com/training/basics/intents/result.html

Comience la Actividad:

Usted necesita pasar un argumento entero adicional al método startActivityForResult (). Puede hacerlo definiendo una constante o simplemente poner un entero.El argumento entero es un "código de solicitud" que identifica su solicitud. Cuando recibe el resultado Intención, la devolución de llamada proporciona el mismo código de solicitud para que la aplicación pueda identificar correctamente el resultado y determinar cómo manejarlo.

 static final int ASK_QUESTION_REQUEST = 1; // Create an Intent to start SecondActivity Intent askIntent = new Intent(FirstActivity.this, SecondActivity.class); // Start SecondActivity with the request code startActivityForResult(askIntent, ASK_QUESTION_REQUEST); 

Devolver el resultado:

Después de completar su trabajo en la segunda clase de actividad, simplemente establezca el resultado y llame a esa actividad de donde viene y por último no olvide escribir la instrucción finish ().

 // Add the required data to be returned to the FirstActivity sendIntent.putExtra(Result_DATA, "Your Data"); // Set the resultCode to Activity.RESULT_OK to // indicate a success and attach the Intent // which contains our result data setResult(RESULT_OK, sendIntent); // With finish() we close the SecondActivity to // return to FirstActivity finish(); 

Recibir el resultado:

Cuando haya terminado con la actividad y las devoluciones posteriores, el sistema llamará al método onActivityResult () de su actividad. Este método incluye tres argumentos:

@ El código de solicitud que pasó a startActivityForResult (). @Un código de resultado especificado por la segunda actividad. Esto es RESULT_OK si la operación fue satisfactoria o RESULT_CANCELED si la operación falló @An Intent que lleva los datos del resultado.

 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // check if the request code is same as what is passed here it is 1 if (requestCode == ASK_QUESTION_REQUEST) { // Make sure the request was successful if (resultCode == RESULT_OK) { final String result = data.getStringExtra(SecondActivity.Result_DATA); // Use the data - in this case display it in a Toast. Toast.makeText(this, "Result: " + result, Toast.LENGTH_LONG).show(); } } } 

Para más detalles vea esta demostración Obteniendo un resultado de una actividad

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.