我正在尝试在两个应用程序AppA和AppB之间传递和接收数据。在我的AppA中,我有一个AppAFActivity.java,其中包含AppAFragment。我希望这个片段打开AppB,它有一个AppBActivity.java打开Login片段,然后是Payment片段,然后是Acknowledgment片段。此确认片段有一个“下一步”按钮,单击该按钮将调用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();
}
非常感谢!
答案 0 :(得分:0)
这可能是行为的可能原因。请检查。
由于您的片段是活动AppAFragment的一部分,即使片段是进行startActivityForResult调用的片段,该活动也会获得处理结果的第一步。
要在片段中获得结果,请尝试:
startActivityForResult(intent,111);
而不是
getActivity().startActivityForResult(intent,111);
在您的片段中。
此外,在您的活动onActivityResult方法中,请尝试添加此行
super.onActivityResult();