ActivityGroup 处理 startActivityForResult

假如现在有个ActivityGroup A,里面有两个子Activity B和C,在C里面跳转到另一个Activity D,然后在D里面执行了某些操作,finish了再返回D的时候,刷新D界面。该如何实现呢?
如果在C里面,c.startActivityForResult(D,0),然后在D finish()之前setResult(1),那么在C的onActivityResult里面是接收不到从D返回过来的返回码1的,也就无法刷新界面了。

解决办法是:
C启动D:
1
2
Intent intent = new Intent(C. this ,D. class );
        getParent().startActivityForResult(intent, 0 );


然后在A中重写onActivityResult:
1
2
3
4
5
6
7
8
9
@Override
        protected void onActivityResult( int requestCode, int resultCode, Intent data) {
                // TODO Auto-generated method stub
                super .onActivityResult(requestCode, resultCode, data);
                if (requestCode== 0 ){
                        C activity =(C)getLocalActivityManager().getCurrentActivity();
            activity.handleActivityResult(requestCode, resultCode, data); //把收到的消息发送给发起请求的Activity C
                }
        }


最后在C中添加handleActivityResult方法
1
2
3
4
5
public void handleActivityResult( int requestCode, int resultCode, Intent data){
                if (resultCode == 1 ){ //获取返回码,刷新界面
                                Log.i(TAG, "返回码:" resultCode);
                }
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值