Activity的请求码与结果码



Activity中的请求码与结果码在处理多个Activity之间的关系起到了关键的作用,让我们知道Activity之间是“怎么去”与“怎么回”的

一、请求码:

试想下面一个小功能:


在左侧,红、绿两个按钮,在两个按钮下,分别有连个区域:红色区域、绿色区域,当点击红色或者绿色按钮后,都会跳转到另一个Activity,这个Activity可以再A处输入文本,之后点击按钮B就会返回到左侧的Activity,并且,在右侧输入的文本内容会出现在相应的区域,也就是说,点击红色后输入文本,文本就会出现在红色区域,反之亦然。

在这个需求中,红绿两个按钮访问的是一个Activity,这样设计,可以重复利用代码,因为连个按钮所执行的动作和动作响应后的结果都是一样的。

如果用请求码处理该问题就十分的简单,具体代码如下:

MainActivity.java

Intent intent = new Intent(MainActivity.this, OtherActivity.class);
<pre name="code" class="java">//红按钮点击事件
startActivityForResult(intent, 1);//绿按钮点击事件startActivityForResult(intent, 2);
 

省略代码.....

@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		// TODO Auto-generated method stub
		String reStri = "";
		if(requestCode == 1){
			reStri = "红按钮";
		}
		else{
			reStri = "绿按钮";
		}
		
		Toast.makeText(this, reStri, Toast.LENGTH_SHORT).show();
		
		super.onActivityResult(requestCode, resultCode, data);
	}

这样我们就可以轻易地知道怎么从第一个页面跳转到第二个页面的了。


二、结果码:


同样试想下面的一个功能:



中间的页面,有一个TIME按钮,当点击后,会计算出当前系统时间的秒数,当秒数是偶数,页面跳转到左面有红色按钮的页面;当秒数是奇数,页面跳转到右面有绿色按钮的页面。跳转完,按当前页面的按钮(红色或绿色),页面会跳转回中间的页面,并且,A区域会显示之前点击过按钮的颜色。

同样,在中间Activity中,我们还是继承

onActivityResult(int requestCode, int resultCode, Intent data)

MainActivity.java


@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		// TODO Auto-generated method stub
		String reStri = "";
		if(resultCode == 1){
			reStri = "红色";
		}
		else{
			reStri = "绿色";
		}
		
		Toast.makeText(this, reStri, Toast.LENGTH_SHORT).show();
		
		super.onActivityResult(requestCode, resultCode, data);
	}


leftActivity.java

leftActivity.this.setResult(1, intent);
leftActivity.this.finish();


rightActivity.java

rightActivity.this.setResult(2, intent);
rifhtActivity.this.finish();

这样,就可以按照需求实现功能了!


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值