我想知道以下情况+ 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" />
答案 0 :(得分:1)
我假设您在片段中调用startActivityForResult()。在您的代码中,结果将返回Activity,而不是片段。
所以,试着这样使用:
intent = new Intent(getActivity(), AppsActivity.class);
intent.putExtra(AppsActivity.KEY_PICK_APP, true);
startActivityForResult(intent,BottomShortcutsFragment.REQUEST_CODE_PICK_APP);