Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android上的两个同时编辑文本_Android_Android Edittext - Fatal编程技术网

android上的两个同时编辑文本

android上的两个同时编辑文本,android,android-edittext,Android,Android Edittext,我正在为android创建一个单元转换器。它有两个编辑文本,我想在用户键入另一个文本中的数字时更新其中一个文本,但我无法获得它 我已经尝试了几种方法,但到目前为止,我无法让它发挥作用。我对android非常陌生,我已经用java制作了这个应用程序,但在这里我似乎无法得到它 到目前为止,我已经使用了on click方法,但我非常希望在用户在编辑文本中输入数字时显示转换,使用addTextChangedListener执行此操作,如下所示: yourEditText.addTextChangedLi

我正在为android创建一个单元转换器。它有两个编辑文本,我想在用户键入另一个文本中的数字时更新其中一个文本,但我无法获得它

我已经尝试了几种方法,但到目前为止,我无法让它发挥作用。我对android非常陌生,我已经用java制作了这个应用程序,但在这里我似乎无法得到它

到目前为止,我已经使用了on click方法,但我非常希望在用户在编辑文本中输入数字时显示转换,使用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

        }
    });
您应该按照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);
            }
        });