2017-08-30 47 views
-3

我的MainActivity啓動一個片段,此片段啓動MySecondActivity,並在SecondActivity完成時啓動ThirdActivity。活動在片段中完成時檢測到Android

我希望當我的MainActivity檢測到ThirdActivity完成時。

我嘗試使用onActivityResult,這是代碼當我完成MySecondActivity

Intent intent = new Intent(); 
    setResult(Utils.RESULT_FROM_ORDER_FINISH, intent); 
    OrderFinishActivity.this.finish(); 
    OrderFinishActivity.this.overridePendingTransition(R.anim.fade_in, R.anim.fade_out); 

在我的MainActivity我得到了onActivityResult

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == Utils.RESULT_FROM_ORDER_FINISH) { 
     // do thing 
    } 
} 

的片段推出SecondActivity與

Intent mainIntent = new Intent(activity, activityClass); 
activity.startActivityForResult(intent, requestCode); 

SecondActivity推出第三個代碼相同的代碼

但onActivityResult不觸發,我覺得片段得到了信息,我想,他的信息傳遞給在MainActivity

+2

你如何發起第二項活動?你在使用startActivityForResult(...)嗎? –

+0

從哪裏啓動第二個活動..是從片段嗎?請分享該代碼 – Nitesh

+0

你還沒有startActivityforResult(),那麼你是如何活動A調用你的onActivityResult()方法 –

回答

2

對於更新問題

你可以做的是

1 > startActivityForResult(SecondActivity). 
2 > Finish SecondActvity set result_ok. 
3 > In OnActivityResult of FirstActivity startActivityForResult(ThirdActivity). 
4 > Finish ThirdActvity set result_ok. 
5 > In OnActivityResult of FirstActivity do your stuff. 

點這裏是不從SecondActivity推出ThirdActivity但是從FirstActivity啓動它。

1

只需更換如果從片段

startActivityForResult(intent, Defines.FILTER_BY_CATALOGUE); 

推出Second activity

getActivity().startActivityForResult(intent,Utils.RESULT_FROM_ORDER_FINISH); 

並更換

setResult(Utils.RESULT_FROM_ORDER_FINISH, intent); 
// 1st parameter is not request code but result code 

setResult(RESULT_OK, intent); 

Second Activity

+0

感謝onActivityResult現在觸發但requestCode具有良好的價值,但我的resultCode始終是0, – Vodet

+0

你做了和我一樣提到的setResult(RESULT_OK,intent); – Nitesh

+0

是的,我剛做了一個編輯,我在另外兩個之間做了其他活動,也許這個塊的結果代碼 – Vodet

0

如果調用從一個片段startActivityForResult,你想父活動觸發onActivityResult,你應該開始新的活動讓家長活動實例:

//This way will work 
getActivity().startActivityForResult(intent,Utils.RESULT_FROM_ORDER_FINISH); 

//This way will not 
startActivityForResult(intent,Utils.RESULT_FROM_ORDER_FINISH);