2016-09-27 69 views
1

我想知道在下面的情況+ FIX發生了什麼。Android,結果startAcitivity產生奇怪的流

後不知何故主叫
fragment.startActivityForResult - >代碼到達第一onActivityResult(上片段,與結果0 =取消),則內部第二活動。
相同的東西,如果我使用getActivity()startActivityForResult ..我用調試器檢查過。我從第二個活動迴應後,代碼將不會達到onActivityResult(就像它被「消耗」?)

我正在構建一個啓動器應用程序,我的活動在Manifest有一些廢話,但不認爲它是從那裏。

<activity android:name=".ui.home.HomeActivity" 
    android:launchMode="singleTask" 
    android:stateNotNeeded="true" 
    android:screenOrientation="portrait" 
    android:excludeFromRecents="true"/> 

<activity android:name=".ui.apps.AppsActivity" 
    android:launchMode="singleTask" 
    android:stateNotNeeded="true" 
    android:screenOrientation="portrait" 
    android:windowSoftInputMode="stateHidden"/> 

這是我創建的意圖

intent = new Intent(getActivity(), AppsActivity.class); 
intent.putExtra(AppsActivity.KEY_PICK_APP, true); 
getActivity().startActivityForResult(intent,BottomShortcutsFragment.REQUEST_CODE_PICK_APP); 

我這是怎麼迴應

Intent intent = new Intent(); 
intent.putExtra(KEY_SELECTED_APP, packageName); 
setResult(Activity.RESULT_OK, intent); 
finish(); 

更新#1 距離清單,它的工作原理,如果我刪除從第二個活動android:launchMode =「singleTask」

<activity 
    android:name=".ui.apps.AppsActivity" 
    android:screenOrientation="portrait" 
    android:stateNotNeeded="true" 
    android:windowSoftInputMode="stateHidden" /> 
+0

請託的所有相關方法。所有的代碼應該在類和方法內部。畢竟這是Java。 –

回答

1

我假設你在Fragment中調用startActivityForResult()。在你的代碼中,結果將返回到Activity,而不是片段。

因此,嘗試使用這樣的:

intent = new Intent(getActivity(), AppsActivity.class); 
intent.putExtra(AppsActivity.KEY_PICK_APP, true); 
startActivityForResult(intent,BottomShortcutsFragment.REQUEST_CODE_PICK_APP); 
+0

我知道這件事..不​​是這樣..無論如何,似乎是從清單中的東西。 – pulancheck1988