Android在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: 
[java]
Intent intent = new Intent(C.this,D.class); 
        getParent().startActivityForResult(intent,0); 

然後在A中重寫onActivityResult:
[java] 
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方法
[java]
public void handleActivityResult(int requestCode, int resultCode, Intent data){ 
                if(resultCode == 1){//獲取返回碼,刷新界面 
                                Log.i(TAG, "返回碼:"+resultCode); 
                } 
        } 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。