【问题标题】:Can't call onActivityResult after the setting result in Fragment在 Fragment 中设置结果后无法调用 onActivityResult
【发布时间】:2015-04-27 17:38:19
【问题描述】:

我有 Activity_1 和 Fragment_1。在 Fragment_1 中,我使用嵌套的 Fragment_2_1 和 Fragment_2_2 开始新的 Activity_2:

getActivity().startActivityForResult(a, Constants.REQUESTCODE_REJECT_PROPOSAL);

onActivityResult 方法在 Activity_1 和 Fragment_1 中被覆盖:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    Toast.makeText(getActivity(), TAG + "Got Result " + String.valueOf(resultCode),     Toast.LENGTH_SHORT).show();
    super.onActivityResult(requestCode, resultCode, data);
    Toast.makeText(getActivity(), TAG + "Got Result " + String.valueOf(resultCode),     Toast.LENGTH_SHORT).show();
    if (resultCode == getActivity().RESULT_OK)
    {
        if (requestCode==Constants.REQUESTCODE_REJECT_PROPOSAL)
        {
            Log.i(TAG + " onActivityResult", " REQUESTCODE_REJECT_PROPOSAL");
            getMyProposals();
        }
    }
}

当 Activity_2 启动时,Fragment_2_1 正在显示。通过单击按钮,我将 Fragment_2_1 替换为 Fragment 2_2。我通过单击按钮完成 Fragment_2_2 中的 Activity_2:

 @Override
        public void onClick(View v) {

            getActivity().setResult(getActivity().RESULT_OK);
            getActivity().finish();
        }

但不知何故 onActivityResult 在 Fragment_1 和 Activity_1 中都没有被调用。什么可以

【问题讨论】:

    标签: android android-fragments onactivityresult


    【解决方案1】:

    问题解决了。原因在于设置

      android:launchMode="singleInstance"
    

    用于 AndroidManifest 中的 Activity_1。

    删除该属性解决了我的问题。

    【讨论】:

      猜你喜欢
      • 2015-04-14
      • 2016-10-22
      • 2015-04-11
      • 2019-11-19
      • 2019-07-08
      • 1970-01-01
      • 2021-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多