在我的应用中使用Iab Billing Processor成功购买后,如何使购买按钮立即消失?
我正在使用带有片段的底部导航活动作为页面。我有三个片段页面。我在第三个片段页面上有一个按钮,它是一个应用程序内购买选项。一切正常,我唯一的问题是,即使我将购买添加到onProductPurchased方法中,购买成功后,购买按钮也不会消失并且Toast不会弹出确认购买成功的消息。我必须再次单击“购买”按钮以拉出下面的方法。我不要我希望以下方法在购买成功后立即生效。
以下是我对onProductPurchased方法和其他方法的了解:
@Override
public void onProductPurchased(@NonNull String productId, @Nullable
TransactionDetails details) {
removeAds.setVisibility(View.GONE);
Toast.makeText(getContext(), "Purchase Complete! Thank You!",
Toast.LENGTH_SHORT).show();
}
@Override
public void onPurchaseHistoryRestored() {
removeAds.setVisibility(View.GONE);
Toast.makeText(getContext(), "Your Purchase has been restored!",
Toast.LENGTH_SHORT).show();
}
@Override
public void onBillingError(int errorCode, @Nullable Throwable error) {
removeAds.setVisibility(View.VISIBLE);
Toast.makeText(getContext(), "Purchase Failed!",
Toast.LENGTH_SHORT).show();
}
@Override
public void onBillingInitialized() {
bp.loadOwnedPurchasesFromGoogle();
}
onActivityResult似乎没有提取requestCode,resultCode,也没有提取Intent数据。我已经尝试了两种方法,但均无济于事。
方法1(失败):
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (!bp.handleActivityResult(requestCode, resultCode, data)) {
super.onActivityResult(requestCode,resultCode,data);
}
}
方法2(失败):
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
Fragment f = getFragmentManager().findFragmentById(this.getId());
f.onActivityResult(requestCode, resultCode, data);
}
他们两个都不起作用。
@Override
public void onDestroy() {
if (bp != null) {
bp.release();
}
super.onDestroy();
}
我的Java类的开头:
public class MenuOptions extends Fragment implements
BillingProcessor.IBillingHandler {
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
private String mParam1;
private String mParam2;
BillingProcessor bp;
private OnFragmentInteractionListener mListener;
public MenuOptions() {
}
public static MenuOptions newInstance(String param1, String param2) {
MenuOptions fragment = new MenuOptions();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_menu_options, container,
false);
bp = new
BillingProcessor(Objects.requireNonNull(getActivity())
.getApplicationContext(), null, MenuOptions.this);
removeAds.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bp.purchase(getActivity(), "android.test.purchased");
}
});
return v;
}
我认为,由于requestCode和resultCode未能正确检索,因此购买按钮不会在成功购买后立即消失。我已经对其进行了测试,但似乎并没有解决任何问题。我在做什么都无法解决这个问题。我已经在网上搜索了我的问题,但发现了同样的问题,但不幸的是,答案并没有解决我的问题。我以前从未做过带有片段的购买期权。我有什么要忘的吗?感谢高级提供的帮助!