简体   繁体   English

如何为片段调用onActivityResult

[英]How to call onActivityResult for fragment

I have this code 我有这个代码

Intent intent = new Intent(getActivity(), PaymentActivity.class);
intent.putExtra(PaymentActivity.EXTRA_PAYMENT, thingToBuy);
getActivity().startActivityForResult(intent, paypal.REQUEST_CODE_PAYMENT);

override function call onActivityResult but it call the result. 覆盖函数调用onActivityResult但它调用结果。

Do not use getActivity().startActivityForResult(intent, paypal.REQUEST_CODE_PAYMENT); 不要使用getActivity()。startActivityForResult(intent,paypal.REQUEST_CODE_PAYMENT);

This calls onActivityResult in the activity 这会在活动中调用onActivityResult

Instead use the method in fragment 而是在片段中使用该方法

startActivityForResult(intent, paypal.REQUEST_CODE_PAYMENT); startActivityForResult(intent,paypal.REQUEST_CODE_PAYMENT);

If you call startActivityForResult from the Fragment the result will deliver to the Fragment . 如果从Fragment调用startActivityForResult ,结果将传递给Fragment And if you call startActivityForResult from the Activity the result will deliver to the Activity . 如果从Activity调用startActivityForResult ,结果将传递给Activity When Fragment calls StartActivityForResult the requestCode will be changed by the Activity , so it will know how to deliver the result to which Fragment . Fragment调用StartActivityForResultActivity将更改requestCode ,因此它将知道如何将结果传递给Fragment

In your case you should change line: 在你的情况下你应该改变线:

getActivity().startActivityForResult(intent, paypal.REQUEST_CODE_PAYMENT);

to: 至:

startActivityForResult(intent, paypal.REQUEST_CODE_PAYMENT);

Where do you override the onActivityForResult method?. 你在哪里覆盖onActivityForResult方法?

If the answer is in your FragmentActivity. 如果答案在你的FragmentActivity中。 You should use: getActivity().startActivityForResult 你应该使用:getActivity()。startActivityForResult

If the answer is in your Fragment. 如果答案在你的片段中。 You should use: startActivityForResult. 你应该使用:startActivityForResult。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM