diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java b/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java index 825aae2c0..e92017a70 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java @@ -175,6 +175,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements boolean validBalance = true; HashMap currencies = new HashMap<>(); + HashMap currencySymbols = new HashMap<>(); LoyaltyCard tempLoyaltyCard; @@ -329,6 +330,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements for (Currency currency : Currency.getAvailableCurrencies()) { currencies.put(currency.getSymbol(), currency); + currencySymbols.put(currency.getCurrencyCode(), currency.getSymbol()); } tabs = binding.tabs; @@ -1011,7 +1013,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements if (balanceType == null) { balanceCurrencyField.setText(getString(R.string.points)); } else { - balanceCurrencyField.setText(balanceType.getSymbol()); + balanceCurrencyField.setText(getCurrencySymbol(balanceType)); } } @@ -1639,11 +1641,16 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements private void currencyPrioritizeLocaleSymbols(ArrayList currencyList, Locale locale) { try { - String currencySymbol = Currency.getInstance(locale).getSymbol(); + String currencySymbol = getCurrencySymbol(Currency.getInstance(locale)); currencyList.remove(currencySymbol); currencyList.add(0, currencySymbol); } catch (IllegalArgumentException e) { Log.d(TAG, "Could not get currency data for locale info: " + e); } } + + private String getCurrencySymbol(final Currency currency) { + // Workaround for Android bug where the output of Currency.getSymbol() changes. + return currencySymbols.get(currency.getCurrencyCode()); + } }