假如現在有個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);
}
}