Sometimes you need to run some Activity,do some operation there and return some value to parent Activity. For this situation Android has possibility to run Activity for result.
I am going to show how to use it.
There are 3 things which you should do:
1) you need to run your subactivity via this method
startActivityForResult(Intent i,int requestCode);
2) in parent activity you should override method
onActivityResult(int requestCode,int resultCode,Intent data)
3) in subactivity you need to put result and finish this activity
setResult(int resultCode,Intent data);finish();
As you can see it is simple.
Now I am going to show full example:
First off all need to create Parent (Main) activity:
import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;public class Main extends Activity{protected static final int SUB_ACTIVITY_REQUEST_CODE = 100;TextView tv;@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);tv = (TextView) findViewById(R.id.textId);tv.setText("TextView element");Button b = (Button) findViewById(R.id.btnId);b.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v){Intent i = new Intent(Main.this,SubActivity.class);startActivityForResult(i,SUB_ACTIVITY_REQUEST_CODE)}})}@Overrideprotected void onActivityResult(int requestCode,int resultCode,Intent data){super.onActivityResult(requestCode,resultCode,data);if(requestCode == SUB_ACTIVITY_REQUEST_CODE){Bundle b = data.getExtras();tv.setText(b.getString("TEXT")); }}}As you can see here we start activity for result and we override onActivityResult method.
Also simple main layout:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="fill_parent"android:layout_height="fill_parent"><TextView android:id="@+id/textId" android:layout_width="wrap_content"android:layout_height="wrap_content" /><Button android:id="@+id/btnId" android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="Click" /></LinearLayout>
Now we need sub activity:
import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;public class SubActivity extends Activity{public final static int SUCCESS_RETURN_CODE = 1;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.subactivity);final EditText editView = (EditText) findViewById(R.id.editId);editView.setText("SubActivity");Button button = (Button) findViewById(R.id.btnId);button.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v){Intent intent = new Intent();Bundle b = new Bundle();b.putString("TEXT",editView.getText().toString());intent.putExtras(b);setResult(SUCCESS_RETURN_CODE,intent);finish()}})}}Here we put result for main activity.
Also layout for subactivity
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="fill_parent"android:layout_height="fill_parent"><EditText android:id="@+id/editId" android:layout_width="fill_parent"android:layout_height="wrap_content" /><Button android:id="@+id/btnId" android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="Click" /></LinearLayout>
As you can see it is very easy to use sub activity in Android.
Is it useful post for you? Leave a comment.
If you’d like to get the latest posts as soon as they’re published,subscribe to our feed!
No related posts.

Thank you for a detailed explanation and big snipsets.
You are welcome. Hope my next posts will also useful for you