com.anjlab.android.iab.v3.TransactionDetails Error After Updating Anjlab Library to latest from 1.1.0
Closed this issue · 1 comments
After Building App Error: public void onProductPurchased(String productId, TransactionDetails details) {
^
symbol: class TransactionDetails
IN My Java Class Error: package com.app.package.view.wallet;
import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.ViewModelProviders;
import com.anjlab.android.iab.v3.BillingProcessor;
import com.anjlab.android.iab.v3.PurchaseInfo;
import com.anjlab.android.iab.v3.TransactionDetails;
import com.google.android.material.bottomsheet.BottomSheetDialog;
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
import com.app.package.R;
import com.app.package.databinding.CustomToastBinding;
import com.app.package.databinding.FragmentPurchaseCoinSheetBinding;
import com.app.package.viewmodel.CoinPurchaseViewModel;
import com.app.package.viewmodelfactory.ViewModelFactory;
import org.jetbrains.annotations.NotNull;
public class CoinPurchaseSheetFragment extends BottomSheetDialogFragment implements BillingProcessor.IBillingHandler {
FragmentPurchaseCoinSheetBinding binding;
CoinPurchaseViewModel viewModel;
BillingProcessor bp;
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
BottomSheetDialog bottomSheetDialog = (BottomSheetDialog) super.onCreateDialog(savedInstanceState);
bottomSheetDialog.setOnShowListener(dialog1 -> {
BottomSheetDialog dialog = (BottomSheetDialog) dialog1;
dialog.setCanceledOnTouchOutside(true);
});
return bottomSheetDialog;
}
@Override
public View onCreateView(@NotNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
binding = DataBindingUtil.inflate(inflater, R.layout.fragment_purchase_coin_sheet, container, false);
return binding.getRoot();
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
viewModel = ViewModelProviders.of(this, new ViewModelFactory(new CoinPurchaseViewModel()).createFor()).get(CoinPurchaseViewModel.class);
initView();
initListeners();
initObserve();
binding.setViewmodel(viewModel);
}
private void initView() {
viewModel.fetchCoinPlans();
if (getActivity() != null) {
bp = new BillingProcessor(getActivity(), getActivity().getResources().getString(R.string.play_lic_key), this);
bp.initialize();
}
}
private void initListeners() {
viewModel.adapter.setOnRecyclerViewItemClick((data, position) -> {
viewModel.coins = data.getCoinAmount();
bp.purchase(getActivity(), data.getPlaystoreProductId());
});
}
private void initObserve() {
viewModel.purchase.observe(getViewLifecycleOwner(), purchase -> showPurchaseResultToast(purchase.getStatus()));
}
private void showPurchaseResultToast(Boolean status) {
dismiss();
CustomToastBinding customToastBinding = DataBindingUtil.inflate(LayoutInflater.from(getActivity()), R.layout.custom_toast, null, false);
customToastBinding.setStatus(status);
if (status != null && status) {
customToastBinding.tvToastMessage.setText("Coins Added To Your Wallet\nSuccessfully..");
} else {
String string = "Something Went Wrong !";
customToastBinding.tvToastMessage.setText(string);
}
Toast toast = new Toast(getContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(customToastBinding.getRoot());
toast.show();
}
@**Override**
public void onProductPurchased(String productId, **TransactionDetails** details) {
bp.**consumePurchase**(productId);
viewModel.purchaseCoin();
}
@Override
public void onProductPurchased(@NonNull String productId, @Nullable PurchaseInfo details) {
}
@Override
public void onPurchaseHistoryRestored() {
Log.d("TAG", "onPurchaseHistoryRestored: ");
}
@Override
public void onBillingError(int errorCode, Throwable error) {
Toast.makeText(getActivity(), "Something went wrong..", Toast.LENGTH_SHORT).show();
}
@Override
public void onBillingInitialized() {
Log.d("BILLING", "onBillingInitialized: " + "Initialized successfully");
}
@Override
public void onDestroy() {
if (bp != null) {
bp.release();
}
super.onDestroy();
}
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
bp.**handleActivityResult**(requestCode, resultCode, data);
}
}