当前位置:编程学习 > wap >>

startActivityForResult() 和 onActivityResult()


一个 Activity 中有两个 startActivityForResult(),需要一个 onActivityResult() 回调方法还是 两个呢? --------------------编程问答-------------------- 两个都要 startActivityForResult() 启动另外一个activity 
onActivityResult()用来回收另外一个activity返回的结果

你可以写个放短信的demo看看,之前做过这样的需求。 --------------------编程问答-------------------- 当然只需要一个了,在里面处理所有可能的返回情况。 --------------------编程问答--------------------
引用 1 楼  的回复:
两个都要 startActivityForResult() 启动另外一个activity 
onActivityResult()用来回收另外一个activity返回的结果

你可以写个放短信的demo看看,之前做过这样的需求。



用什么来区分两个onActivityResult()呢   我对这个不是很了解 --------------------编程问答--------------------
引用 1 楼  的回复:
两个都要 startActivityForResult() 启动另外一个activity 
onActivityResult()用来回收另外一个activity返回的结果

你可以写个放短信的demo看看,之前做过这样的需求。


哥们,人家问的是onActivityResult()的个数唉... --------------------编程问答--------------------
引用 2 楼  的回复:
当然只需要一个了,在里面处理所有可能的返回情况。



就是说在一个里面放所有返回值么  --------------------编程问答-------------------- 楼主你只需要 复写一个onActivityResult()即可,
因为你在调用StartActivityForResult(Intent intent , int requestcode)里的时候会指定2个参数,在复写这个方法的时候也有requestcode,和resultCode 这2个你可以根据if()来判断requestcode和resultCode不同的值来实现不同的功能, --------------------编程问答-------------------- 楼主你是否理解有些偏差,我来这样描述:

有三个Activity:a1,r1,r2

在a1中有你所说的,两个startActivityForResult(),分别是start r1和r2来取得结果。
>onActivityResult()是写在a1中的哦<

r1中,用setResult(int requestCode, Intent data)来设置返回的code,有数据的话可以放在Intent中传回去,r2同理。

在a1的onActivityResult()中,可以接收到返回的结果啊,像下面这样:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == 5)
{
Toast.makeText(TestingAndroid.this, "" + resultCode,
Toast.LENGTH_SHORT).show();
}
super.onActivityResult(requestCode, resultCode, data);
} --------------------编程问答-------------------- 楼主你只需要 复写一个onActivityResult()即可,
因为你在调用StartActivityForResult(Intent intent , int requestcode)里的时候会指定2个参数,
在复写onActivityResult()这个方法的时候也有requestcode,和resultCode 这2个你可以根据if()来判断requestcode和resultCode不同的值来实现不同的功能,其中resultCode 这个参数是你启动的另外个Activity的时候,调用setResult(Intent intent, int resultcode)的时候指定的值
举个例子
假如你在第一个Activity中的Button1中启动一个Activity1
Intent intent = new Intent(Activity.this, Activity1.class);
Activity.this.StartActivityForResult(intent, 1);//这里指定参数resultcode为1
然后在Activity1回到Activity的时候你调用setResult方法时候指定resultCode
Intent intent1 = new Intent();
Activity1.this.setResult(intent1, 1)//这里指定参数resultcode为1


然后你在Activity中复写onActivityResult()方法的时候,根据传入不同的参数值来判断即可
if(requestcode==1&&resultcode==1){
//实现的功能
} --------------------编程问答--------------------
引用 5 楼  的回复:
引用 2 楼  的回复:
当然只需要一个了,在里面处理所有可能的返回情况。



就是说在一个里面放所有返回值么


总地来说,onActivityResult()是用来接收返回的,setResult()才是设置返回在值的。 --------------------编程问答-------------------- 多看下参数的意思 --------------------编程问答-------------------- 传递不同的参数就可以了。 --------------------编程问答-------------------- 只要一个就可以了、通过你跳转时候给定的标识来判断是从哪个界面返回回来的数据、跳转回来后通过requestCode来区分、当然要在resultCode == RESULT_OK的前提下、 --------------------编程问答--------------------
引用 7 楼  的回复:
楼主你是否理解有些偏差,我来这样描述:

有三个Activity:a1,r1,r2

在a1中有你所说的,两个startActivityForResult(),分别是start r1和r2来取得结果。
>onActivityResult()是写在a1中的哦<

r1中,用setResult(int requestCode, Intent data)来设置返回的code,有数据的话可以……



那如果我要用一个菜单键 来保存onActivityResult()返回的数据 ,该怎么写呢 ? --------------------编程问答--------------------
引用 8 楼  的回复:
楼主你只需要 复写一个onActivityResult()即可,
因为你在调用StartActivityForResult(Intent intent , int requestcode)里的时候会指定2个参数,
在复写onActivityResult()这个方法的时候也有requestcode,和resultCode 这2个你可以根据if()来判断requestcode和resultCod……

这个正解
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,