android上的两个同时编辑文本
我正在为android创建一个单元转换器。它有两个编辑文本,我想在用户键入另一个文本中的数字时更新其中一个文本,但我无法获得它 我已经尝试了几种方法,但到目前为止,我无法让它发挥作用。我对android非常陌生,我已经用java制作了这个应用程序,但在这里我似乎无法得到它 到目前为止,我已经使用了on click方法,但我非常希望在用户在编辑文本中输入数字时显示转换,使用addTextChangedListener执行此操作,如下所示:android上的两个同时编辑文本,android,android-edittext,Android,Android Edittext,我正在为android创建一个单元转换器。它有两个编辑文本,我想在用户键入另一个文本中的数字时更新其中一个文本,但我无法获得它 我已经尝试了几种方法,但到目前为止,我无法让它发挥作用。我对android非常陌生,我已经用java制作了这个应用程序,但在这里我似乎无法得到它 到目前为止,我已经使用了on click方法,但我非常希望在用户在编辑文本中输入数字时显示转换,使用addTextChangedListener执行此操作,如下所示: yourEditText.addTextChangedLi
yourEditText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
//do your conversion
yourSecondEditText.setText(text);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
您应该按照Chadi的建议添加TextChangedListener,但我建议以不同的模式实现。看看下面的实现
我建议您使用,因为正如官方文件所述,您可以确定文本实际上已经更改
官方文件:
调用此方法是为了通知您,在s中的某个位置,文本
已经改变了。对s进行进一步修改是合法的
这是一次回调,但要小心不要让自己陷入无限期
循环,因为您所做的任何更改都将导致调用此方法
再次递归。没有人告诉你变化发生在哪里
因为其他后文本更改的方法可能已经做出了其他更改
更改并使偏移无效。但如果你需要知道这里,你
可以在ContextChangedCharsequence中使用setPanObject、int、int、int,
int,int,int标记你的位置,然后从这里向上看
斯潘最后死了
发布您尝试过的代码。使用TextWatcher Assa发布的解决方案有效!谢谢你,伙计。我对这个页面很陌生,不知道如何发布代码。抱歉:谢谢Assa,我曾尝试使用textWatcher,但我实现它的方式给了我一个无限循环,导致堆栈溢出错误。但我现在知道如何正确使用textWatcher了!谢谢大家!@丹尼尔:我很高兴:!这是答案,但正如阿萨所说;我们应该使用后文本更改,因为这样我们可以确保文本已更改。非常感谢。
EditText firstEdit = (EditText) findViewById(R.id.firstEdit);
firstEdit.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
//Do here your conversion
secondEdit.setText(convertedText);
}
});