Es muy común, al iniciar una nueva actividad, que queramos recibir los datos de esa otra actividad al final de la actividad y luego ejecutar una acción.
Veamos un ejemplo:
Supongamos que tengo una actividad ListProducts y AddEditProduct . Dentro de la actividad ListProducts hago clic en el botón para añadir un nuevo producto, y quiero recibir el resultado de esta adición de producto en mi actividad ListProducts. Bien, por eso usamos el método overridden onActivityResult() en la actividad de la que queremos recibir el resultado. A continuación se muestra el código de ejemplo para ilustrar cómo utilizar estos métodos.
public class MainActivity extends Activity { TextView textView1; Button button1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView1=(TextView)findViewById(R.id.textView1); button1=(Button)findViewById(R.id.button1); button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Intent intent=new Intent(MainActivity.this,SecondActivity.class); startActivityForResult(intent, 1);// Activity é iniciada com requestCode 1 } }); } // Recebe os dados da outra Activity @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // Verfica se o requestCode é o mesmo que foi passado if(requestCode==1 && resultCode == RESULT_OK) { String message=data.getStringExtra("MESSAGE"); textView1.setText(message); } } }
<RelativeLayout xmlns:androclass="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/button1" android:layout_alignParentTop="true" android:layout_marginTop="48dp" android:text="Default Message" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textView1" android:layout_centerHorizontal="true" android:layout_marginTop="42dp" android:text="GetMessage" /> </RelativeLayout>
public class OutraActivity extends Activity { EditText editText1; Button button1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_outra); editText1=(EditText)findViewById(R.id.editText1); button1=(Button)findViewById(R.id.button1); button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { String message=editText1.getText().toString(); Intent intent=new Intent(); intent.putExtra("MESSAGE",message); setResult(RESULT_OK,intent); //encerra activity finish(); } }); } }
<RelativeLayout xmlns:androclass="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".OutraActivity" > <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_marginTop="61dp" android:layout_toRightOf="@+id/textView1" android:ems="10" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/editText1" android:layout_alignBottom="@+id/editText1" android:layout_alignParentLeft="true" android:text="Enter Message:" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/editText1" android:layout_centerHorizontal="true" android:layout_marginTop="34dp" android:text="Submit" /> </RelativeLayout>