Fixed multiple pro fragments

pull/215/head
M66B 1 year ago
parent 9726da053c
commit b8d2d72387

@ -80,9 +80,12 @@ public class ActivityBilling extends ActivityBase implements PurchasingListener,
if (standalone) { if (standalone) {
setContentView(R.layout.activity_billing); setContentView(R.layout.activity_billing);
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); int count = getSupportFragmentManager().getBackStackEntryCount();
fragmentTransaction.replace(R.id.content_frame, new FragmentPro()).addToBackStack("pro"); if (count == 0) {
fragmentTransaction.commit(); FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.content_frame, new FragmentPro()).addToBackStack("pro");
fragmentTransaction.commit();
}
getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true);

@ -98,9 +98,12 @@ public class ActivityBilling extends ActivityBase implements
if (standalone) { if (standalone) {
setContentView(R.layout.activity_billing); setContentView(R.layout.activity_billing);
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); int count = getSupportFragmentManager().getBackStackEntryCount();
fragmentTransaction.replace(R.id.content_frame, new FragmentPro()).addToBackStack("pro"); if (count == 0) {
fragmentTransaction.commit(); FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.content_frame, new FragmentPro()).addToBackStack("pro");
fragmentTransaction.commit();
}
getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true);

@ -98,9 +98,12 @@ public class ActivityBilling extends ActivityBase implements
if (standalone) { if (standalone) {
setContentView(R.layout.activity_billing); setContentView(R.layout.activity_billing);
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); int count = getSupportFragmentManager().getBackStackEntryCount();
fragmentTransaction.replace(R.id.content_frame, new FragmentPro()).addToBackStack("pro"); if (count == 0) {
fragmentTransaction.commit(); FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.content_frame, new FragmentPro()).addToBackStack("pro");
fragmentTransaction.commit();
}
getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true);
@ -314,96 +317,97 @@ public class ActivityBilling extends ActivityBase implements
Log.unexpectedError(getSupportFragmentManager(), ex); Log.unexpectedError(getSupportFragmentManager(), ex);
} }
} }
/*
private void onPurchaseConsume(Intent intent) {
billingClient.queryPurchasesAsync(BillingClient.SkuType.INAPP, new PurchasesResponseListener() {
@Override
public void onQueryPurchasesResponse(@NonNull BillingResult result, @NonNull List<Purchase> list) {
if (result.getResponseCode() == BillingClient.BillingResponseCode.OK) {
for (Purchase purchase : list)
consumePurchase(purchase);
} else
reportError(result, "IAB onPurchaseConsume");
}
});
}
private void onPurchaseError(Intent intent) { /*
String message = intent.getStringExtra("message"); private void onPurchaseConsume(Intent intent) {
boolean play = Helper.hasPlayStore(this); billingClient.queryPurchasesAsync(BillingClient.SkuType.INAPP, new PurchasesResponseListener() {
Uri uri = Helper.getSupportUri(this, "Purchase:error"); @Override
if (!TextUtils.isEmpty(message)) public void onQueryPurchasesResponse(@NonNull BillingResult result, @NonNull List<Purchase> list) {
uri = uri if (result.getResponseCode() == BillingClient.BillingResponseCode.OK) {
.buildUpon() for (Purchase purchase : list)
.appendQueryParameter("message", "IAB: " + message + " Play: " + play) consumePurchase(purchase);
.build(); } else
Helper.view(this, uri, true); reportError(result, "IAB onPurchaseConsume");
} }
});
}
@Override private void onPurchaseError(Intent intent) {
public void onBillingSetupFinished(BillingResult result) { String message = intent.getStringExtra("message");
if (result.getResponseCode() == BillingClient.BillingResponseCode.OK) { boolean play = Helper.hasPlayStore(this);
EntityLog.log(this, "IAB connected"); Uri uri = Helper.getSupportUri(this, "Purchase:error");
for (IBillingListener listener : listeners) if (!TextUtils.isEmpty(message))
listener.onConnected(); uri = uri
.buildUpon()
.appendQueryParameter("message", "IAB: " + message + " Play: " + play)
.build();
Helper.view(this, uri, true);
}
backoff = 4; @Override
queryPurchases(); public void onBillingSetupFinished(BillingResult result) {
} else if (result.getResponseCode() == BillingClient.BillingResponseCode.OK) {
reportError(result, "IAB connected"); EntityLog.log(this, "IAB connected");
} for (IBillingListener listener : listeners)
listener.onConnected();
@Override backoff = 4;
public void onBillingServiceDisconnected() { queryPurchases();
EntityLog.log(this, "IAB disconnected"); } else
for (IBillingListener listener : listeners) reportError(result, "IAB connected");
listener.onDisconnected(); }
backoff *= 2; @Override
retry(backoff); public void onBillingServiceDisconnected() {
} EntityLog.log(this, "IAB disconnected");
for (IBillingListener listener : listeners)
listener.onDisconnected();
private void retry(int backoff) { backoff *= 2;
Log.i("IAB connect retry in " + backoff + " s"); retry(backoff);
}
getMainHandler().postDelayed(new RunnableEx("IAB retry") {
@Override private void retry(int backoff) {
public void delegate() { Log.i("IAB connect retry in " + backoff + " s");
try {
if (!getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) getMainHandler().postDelayed(new RunnableEx("IAB retry") {
return; @Override
boolean ready = billingClient.isReady(); public void delegate() {
Log.i("IAB ready=" + ready); try {
if (!ready) if (!getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED))
billingClient.startConnection(ActivityBilling.this); return;
} catch (Throwable ex) { boolean ready = billingClient.isReady();
Log.e(ex); Log.i("IAB ready=" + ready);
if (!ready)
billingClient.startConnection(ActivityBilling.this);
} catch (Throwable ex) {
Log.e(ex);
}
} }
} }, backoff * 1000L);
}, backoff * 1000L); }
}
@Override @Override
public void onPurchasesUpdated(BillingResult result, @Nullable List<Purchase> purchases) { public void onPurchasesUpdated(BillingResult result, @Nullable List<Purchase> purchases) {
Log.i("IAB purchases updated"); Log.i("IAB purchases updated");
if (result.getResponseCode() == BillingClient.BillingResponseCode.OK) if (result.getResponseCode() == BillingClient.BillingResponseCode.OK)
checkPurchases(purchases); checkPurchases(purchases);
else else
reportError(result, "IAB purchases updated"); reportError(result, "IAB purchases updated");
} }
private void queryPurchases() { private void queryPurchases() {
billingClient.queryPurchasesAsync(BillingClient.SkuType.INAPP, this); billingClient.queryPurchasesAsync(BillingClient.SkuType.INAPP, this);
} }
@Override @Override
public void onQueryPurchasesResponse(@NonNull BillingResult result, @NonNull List<Purchase> list) { public void onQueryPurchasesResponse(@NonNull BillingResult result, @NonNull List<Purchase> list) {
if (result.getResponseCode() == BillingClient.BillingResponseCode.OK) if (result.getResponseCode() == BillingClient.BillingResponseCode.OK)
checkPurchases(list); checkPurchases(list);
else else
reportError(result, "IAB query purchases"); reportError(result, "IAB query purchases");
} }
*/ */
interface IBillingListener { interface IBillingListener {
void onConnected(); void onConnected();

@ -98,9 +98,12 @@ public class ActivityBilling extends ActivityBase implements
if (standalone) { if (standalone) {
setContentView(R.layout.activity_billing); setContentView(R.layout.activity_billing);
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); int count = getSupportFragmentManager().getBackStackEntryCount();
fragmentTransaction.replace(R.id.content_frame, new FragmentPro()).addToBackStack("pro"); if (count == 0) {
fragmentTransaction.commit(); FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.content_frame, new FragmentPro()).addToBackStack("pro");
fragmentTransaction.commit();
}
getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true);

Loading…
Cancel
Save