Android,结果的startAcitivity产生奇怪的流量

时间:2016-09-27 19:26:52

标签: android android-intent android-activity

我想知道以下情况+ FIX会发生什么。

以某种方式打电话给 fragment.startActivityForResult - >代码到达第一个onActivityResult(在片段上,结果0 = CANCELLED),然后在第二个Activity内 如果我使用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 它来自Manifest,如果我从第二个活动中移除android:launchMode =“singleTask”

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

1 个答案:

答案 0 :(得分:1)

我假设您在片段中调用startActivityForResult()。在您的代码中,结果将返回Activity,而不是片段。

所以,试着这样使用:

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