Невозможно вызвать TextView.SetText в async-методе больше одного раза после обновления библиотеки android In-app Billing
Есть рабочее приложение, после обновления Google In-app Billing lib сломался некоторый функционал, а именно отображение цен на товары в приложении.
После инициализации библиотеки асинхронным вызовом TextView.setText можно вызвать только один раз. Все остальные TextView.setText просто игнорируются, как будто после него стоит return;
Вот часть кода:
billingClient.startConnection(new BillingClientStateListener() {
@Override
public void onBillingSetupFinished(@NonNull BillingResult billingResult) {
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
loadSkuDetails();
}
}
});
private void loadSkuDetails() {
List<String> skuList = getSkuList();
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);
// получить подробности для товаров пользователя
billingClient.querySkuDetailsAsync(params.build(), (billingResult, skuDetailsList) -> {
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK && skuDetailsList != null) {
if (listener != null)
listener.skuDetailsLoaded();
}
});
}
@Override
public void skuDetailsLoaded() {
firstPrice.setText("1");
secondPrice.setText("2");
thirdPrice.setText("3");
}
Если раньше во всех 3х TextView текст устанавливался корректно, то теперь он меняется только для firstPrice. Если закомментировать первый вызов, будет выполняться только второй. Отладка не помогает, точки останова просто игнорируются на втором и третьем TextView.setText. Как это исправить и как теперь корректно связать view-ы и асинхронные методы библиотеки?
Ответы (1 шт):
Стоило правильно сформулировать вопрос, чтоб в голове сразу же родился ответ. Помог конечно же Handler.