2016-09-27 5 views
1

次の場合+ FIXで何が起こっているのか知りたい。 >コードは、(断片上、結果0 =キャンセルさを有する)、第2の活性内部onActivityResult最初に到達 -
fragment.startActivityForResultを呼び出した後にどういうわけかAndroid、startAcitivityの結果が奇妙なフローを生成する


getActivity()を使用すると同じものがあります。 startActivityForResult ..デバッガでチェックしました。 2番目のアクティビティから応答した後、コードがonActivityResultに到達しません(「消費されました」のように)

ランチャーアプリを構築しています。

<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 intent = new Intent(); 
intent.putExtra(KEY_SELECTED_APP, packageName); 
setResult(Activity.RESULT_OK, intent); 
finish(); 

をどのように反応するかUPDATE#1 ある意図

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

を作成する方法であります2番目のアクティビティからアンドロイド:launchMode = "singleTask"

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

。すべてのコードは、クラスとメソッドの内部にある必要があります。結局、これはJavaです。 –

答えて

1

フラグメントでstartActivityForResult()を呼び出しているとします。あなたのコードでは、結果は、フラグメントではなくアクティビティーに戻ります。

ので、このように使用してみてください:関連するすべてのメソッドを支えるください

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

私はそれについて知っています。それはそうではありませんでした。とにかく、明白なものからのものであるようです。 – pulancheck1988