Activity中startActivityForResult()的连续调用-阿里云开发者社区

开发者社区> 小弟的谷哥> 正文

Activity中startActivityForResult()的连续调用

简介: MainActivity如下: package cn.teststartactivityforresult; import android.app.
+关注继续查看

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>


 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10051 0
PostgreSQL sharding : citus 系列3 - 窗口函数调用限制 与 破解之法(套用gpdb执行树,分步执行)
标签 PostgreSQL , citus , 窗口函数 背景 窗口函数是分析场景常用的,目前(citus 7.5)仅支持两种场景使用window函数, 1、partition by 必须是分布键。
874 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13865 0
01-java基础加强,eclipse工具使用,快捷键,断点调试,单元测试,jdk5新特性,增强for循环,集合map,list,可变参数,枚举,反射,泛型
一、eclipse工具的使用 1. java代码的位置        1) 选择工作空间 workspace  选择一个文件夹存放程序(代码) 不要用中文和空格        2) 新建一个java 工程(Project)        3) 建包建类   2. 快捷键        alt + / :代码自动补齐,需要配置的              
1328 0
+关注
小弟的谷哥
welcome
766
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载