【问题标题】:onActivityResult was not called againonActivityResult 没有被再次调用
【发布时间】:2015-01-14 03:36:12
【问题描述】:

我正在尝试在两个应用程序 AppA 和 AppB 之间传递和接收数据。在我的 AppA 中,我有一个 AppAActivity.java,其中包含 AppAFragment。我希望这个片段打开 AppB,它有一个 AppBActivity.java 打开登录片段,然后是支付片段,然后是确认片段。此确认片段有一个“下一步”按钮,单击该按钮将调用 setResult 方法,以便它现在会提醒 AppAFragment 接收结果。但是负责接收结果的 AppAFragment 中的 onActivityResult 方法没有被再次调用。

AppAFragment.java

@Override
public void openUrl() {
    Intent intent = getBaseParentActivity().getPackageManager()
            .getLaunchIntentForPackage(DataConstants.SAMPLE_RIB_PACKAGE);
    intent.setAction(Intent.ACTION_SEND);
    intent.putExtra(DataConstants.TRANSACTION_REFERENCE, getLinkWS()
            .getTransRef());
    intent.putExtra(DataConstants.TRANSACTION_AMOUNT, mAmount.getText()
            .toString());
    intent.setType(MediaType.TEXT_PLAIN);
    startActivityForResult(intent,
            DataConstants.CODE_APP_TO_APP_PAYMENT);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (resultCode == Activity.RESULT_OK
            && requestCode == DataConstants.CODE_APP_TO_APP_PAYMENT) {

        Log.v("Test", "Test");

        Toast.makeText(getBaseParentActivity(),
                data.getStringExtra(DataConstants.BANK_REFERENCE_NO),
                Toast.LENGTH_SHORT).show();         
    }
}

AcknowledgementFragment.java

@Override
public void buttonNext() {
    Intent intent = new Intent();
    intent.putExtra(DataConstants.BANK_REFERENCE_NO, infoModel.getBankRef());

    getActivity().setResult(Activity.RESULT_OK, intent);
    getActivity().finish();
}

非常感谢!

【问题讨论】:

  • 尝试将 onActivtyResultAppAFragment 移动到 AppAActivity。在 Android 中,Activity 是 Intent 通信的主要流程。 Intent 可以启动一个 Activity,然后启动 Fragment,因此为了获得最佳编码性能,任何 Intent 内容都应该由Activity 发送和接收

标签: java android android-fragments onactivityresult


【解决方案1】:

这可能是导致该行为的可能原因。请检查。

由于您的片段是活动 AppAFragment 的一部分,即使片段是发出 startActivityForResult 调用的片段,活动也会首先处理结果。

要在片段中获得结果,请尝试:

startActivityForResult(intent,111);

而不是

getActivity().startActivityForResult(intent,111); 在您的片段中。

另外,在您的活动 onActivityResult 方法中,尝试添加此行

super.onActivityResult();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-31
    • 2014-08-26
    • 1970-01-01
    • 1970-01-01
    • 2016-03-16
    相关资源
    最近更新 更多