现在的位置: 首页 > 综合 > 正文

Activity中startActivityForResult()的连续调用

2013年02月19日 ⁄ 综合 ⁄ 共 4193字 ⁄ 字号 评论关闭

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>

 

抱歉!评论已关闭.