Android:使用Iab结算处理器成功购买后,“使”按钮立即消失

时间:2018-08-25 21:17:28

标签: java android android-fragments android-developer-api

在我的应用中使用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未能正确检索,因此购买按钮不会在成功购买后立即消失。我已经对其进行了测试,但似乎并没有解决任何问题。我在做什么都无法解决这个问题。我已经在网上搜索了我的问题,但发现了同样的问题,但不幸的是,答案并没有解决我的问题。我以前从未做过带有片段的购买期权。我有什么要忘的吗?感谢高级提供的帮助!

0 个答案:

没有答案
相关问题