Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未再次调用onActivityResult_Java_Android_Android Fragments_Onactivityresult - Fatal编程技术网

Java 未再次调用onActivityResult

Java 未再次调用onActivityResult,java,android,android-fragments,onactivityresult,Java,Android,Android Fragments,Onactivityresult,我正在尝试在两个应用程序(AppA和AppB)之间传递和接收数据。在我的AppA中,我有一个AppAActivity.java,其中包含AppAFragment。我想让这个片段打开AppB,它有一个AppBActivity.java,打开登录片段,然后是支付片段,然后是确认片段。此确认片段有一个“下一步”按钮,单击该按钮将调用setResult方法,以便它现在将通知AppAFragment接收结果。但是来自负责接收结果的AppAFragment的onActivityResult方法不会被再次调用

我正在尝试在两个应用程序(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();         
    }
}
@Override
public void buttonNext() {
    Intent intent = new Intent();
    intent.putExtra(DataConstants.BANK_REFERENCE_NO, infoModel.getBankRef());

    getActivity().setResult(Activity.RESULT_OK, intent);
    getActivity().finish();
}
AcknowledgementFragment.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();         
    }
}
@Override
public void buttonNext() {
    Intent intent = new Intent();
    intent.putExtra(DataConstants.BANK_REFERENCE_NO, infoModel.getBankRef());

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

多谢各位

这可能是该行为的一个可能原因。请查收

因为您的片段是activity AppAFragment的一部分,所以即使fragment是发出startActivityForResult调用的片段,该活动也会首先处理结果

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

startActivityForResult(intent,111)

而不是

getActivity().startActivityForResult(intent,111)在片段中

另外,在ActivityResult方法上的activity中,尝试添加此行

super.onActivityResult();

尝试将
onActivityResult
从AppAFragment移动到AppAActivity。在Android中,活动是意图交流的主要流程。意图可以启动一个活动,然后启动片段,因此为了获得最佳编码性能,任何意图内容都应该由活动发送和接收