MainActivity如下:
package cn.teststartactivityforresult;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
/**
* Demo描述:
* 测试startActivityForResult的连续调用
*
*/
public class MainActivity extends Activity {
private Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
}
/**
* 注意:
* startActivityForResult(intent, requestCode)方法的参数
* requestCode表示本次startActivityForResult操作的请求码
* 因为在同一个Activity中根据业务的不同需要多次执行startActivityForResult
* 所以为了区分每次startActivityForResult的操作为其设置一个
* requestCode
*/
private void init(){
mButton=(Button) findViewById(R.id.first_button);
mButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent=new Intent(MainActivity.this, SecondActivity.class);
startActivityForResult(intent, 123);
}
});
}
/**
* 注意:
* onActivityResult(int requestCode, int resultCode, Intent data)方法的参数
* 同上面的描述背景既然有不同的startActivityForResult操作,那么这些不同的操作
* 当然有不同的返回值.所以用resultCode来标识了不同的结果
* 所以可以根据requestCode和resultCode来共同进行业务判断
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode==123&&resultCode==7) {
System.out.println("第一个Activity关闭 得到返回数据为:"+data.getStringExtra("test"));
finish();
}
}
}
SecondActivity如下:
package cn.teststartactivityforresult;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class SecondActivity extends Activity {
private Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.secondactivity);
init();
}
private void init(){
mButton=(Button) findViewById(R.id.second_button);
mButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent=new Intent(SecondActivity.this, ThirdActivity.class);
startActivityForResult(intent, 9527);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode==9527) {
System.out.println("第二个Activity关闭 得到返回数据为:"+data.getStringExtra("test"));
setResult(7, data);
finish();
}
}
}
ThirdActivity如下:
package cn.teststartactivityforresult;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class ThirdActivity extends Activity {
private Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.thirdactivity);
init();
}
private void init(){
mButton=(Button) findViewById(R.id.third_button);
mButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
System.out.println("第三个Activity关闭");
Intent data=new Intent();
data.putExtra("test","hello");
setResult(9527, data);
finish();
}
});
}
}
main.xml如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<Button
android:id="@+id/first_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="第一个Activity"
android:layout_centerInParent="true"
/>
</RelativeLayout>
secondactivity.xml如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<Button
android:id="@+id/second_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="第二个Activity"
android:layout_centerInParent="true"
/>
</RelativeLayout>
thirdactivity如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<Button
android:id="@+id/third_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="关闭该Activity"
android:layout_centerInParent="true"
/>
</RelativeLayout>