每当OnTextChanged激活时,EditText就会锁定我的应用程序



因此,在用户使用以下代码输入文本后,我试图获得一个编辑文本,在输入文本前面放一个美元符号($(。每当我试图在edittext中输入任何内容时,它都会锁定整个应用程序。我试着删除了代码,盒子运行良好。我应该更改什么?还是应该使用完全不同的解决方案?

代码:

final EditText minAmt = fragView.findViewById(R.id.minPayment);
minAmt.addTextChangedListener(new TextWatcher()
{
@Override
public void afterTextChanged(Editable s)
{
minAmt.setText("$" + minAmt.getText().toString());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) 
{ }
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) 
{ }
});

我需要在文本更改时和更改前完成覆盖吗?作为参考,我从另一个线程获得了这个代码框架:在Android Studio 的编辑文本中自动添加美元符号($(

您的应用程序冻结是因为您进入了一个无限循环。在afterTextChanged内部调用setText将调用afterTextChange。解决方案是:

@Override
public void afterTextChanged(Editable s)
{
minAmt.removeTextChangedListener(this);
minAmt.setText("$" + minAmt.getText().toString());
minAmt.addTextChangedListener(this);
}

最新更新