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);
                }
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章