关于android的两个同步编辑文本

时间:2015-05-26 07:25:15

标签: android android-edittext

我正在为android创建一个单位转换器。它有两个编辑文本,我想更新一个,因为用户输入了另一个的数字,但我无法得到它。

我尝试了几种方法,但到目前为止,我还无法解决这个问题。我是android的新手,我已经在java中创建了这个应用程序,但在这里我似乎无法得到它。

到目前为止,我已经使用了点击方法,但我非常希望它能够在用户输入编辑文本中的数字时显示转换

2 个答案:

答案 0 :(得分:2)

你应该像Chadi建议的那样添加 TextChangedListener ,但我建议以不同的模式实现。请查看以下 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);
            }
        });

我建议您使用afterTextChanged,因为正如官方文档所述,您可以确定文本实际上已经更改。

官方文件:

  

调用此方法是为了通知您,在s中的某处文本   已更改。对s进行进一步更改是合法的   这个回调,但要注意不要陷入无限   循环,因为您所做的任何更改都将导致调用此方法   再次递归。 (你不会被告知改变发生在哪里   因为其他的afterTextChanged()方法可能已经有了其他方法   更改并使抵消无效。但如果你需要在这里知道,你   可以在onTextChanged中使用setSpan(Object,int,int,int)(CharSequence,   int,int,int)标记你的地方,然后从这里查找   跨度最终。

答案 1 :(得分:1)

使用addTextChangedListener这样做:

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

        }
    });