gpt4 book ai didi

android - EditText 保存在 SharedPref 中,价格已格式化

转载 作者:太空狗 更新时间:2023-10-29 13:55:11 25 4
gpt4 key购买 nike

我有一个价格为 15 美元或 15 欧元的 EditText。这取决于您手机的货币。问题是,当我更改我的 EditText 的文本时,我只想在我的 SharedPreference 中保存小数,但我想像这样再次设置我的 EditText 的文本:例如 $15 或 15€。为此,也许我应该只编辑小数点而不是货币。但我不知道该怎么做。

目前,我有:

editTextPrice.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

}

@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

}

@Override
public void afterTextChanged(Editable editable) {
String price = editable.toString().replaceAll("\\D+",""); // take only decimal for the price
Preferences.setPrice(getContext(), price);
editTextPrice.setText(Format.formatPrice(price));
}
});

此解决方案的问题是我的 afterTextChanger 中的 setText。它让我陷入无限循环,因为它总是在改变我的文本。

也许这不是解决方案。也许我只需要将货币放在左侧或右侧即可使小数点可编辑。但不知道我该怎么做。

我有点迷路了:/

谢谢。

最佳答案

为了防止无限循环你可以添加变量标志,像这样:

editTextPrice.addTextChangedListener(new TextWatcher() {

boolean ignoreChange = false;

@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

}

@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

}

@Override
public void afterTextChanged(Editable editable) {
if (!ignoreChange) {
String price = editable.toString().replaceAll("\\D+",""); // take only decimal for the price
Preferences.setPrice(getContext(), price);
ignoreChange = true;
editTextPrice.setText(Format.formatPrice(price));
ignoreChange = false;
}
}
});

afterTextChanged(Editable editable) 中检查它,用 ignoreChange = true; 包围 editTextPrice 更改 ... ignoreChange = false; 然后用 $ 或 € 施展你的魔法。

关于android - EditText 保存在 SharedPref 中,价格已格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40398142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com