Как сделать так, чтобы кнопка покупки исчезла сразу после успешной покупки с использованием Iab Billing Processor в моем приложении?
Я использую нижнюю навигацию с фрагментами для страниц. У меня есть три страницы фрагмента. На третьей странице фрагмента у меня есть кнопка, которая является опцией покупки в приложении. Все работает нормально, моя единственная проблема в том, что, когда покупка прошла успешно, кнопка покупки не исчезнет, и не появится всплывающее окно, подтверждающее, что покупка прошла успешно, хотя я добавил ее в метод onProductPurchased. Я должен нажать кнопку покупки во второй раз, чтобы вытащить метод ниже. Я не хочу этого Я хочу, чтобы приведенный ниже метод вытащил сразу после покупки.
Вот что у меня есть для метода 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. Я проверил это, и это, кажется, ничего не тянет. Ничто из того, что я делаю, не решает эту проблему. Я искал в Интернете свою проблему и нашел тот же вопрос, но, к сожалению, ответы не решили мою проблему. Я никогда не делал опционы на покупку с фрагментами раньше. Есть ли что-то, что я забываю? Я ценю помощь в продвинутом!