仅使用两个编辑文本的转换器应用程序



我正在制作一个将卢比转换为美元的转换器应用程序,反之亦然,我只想使用两个编辑文本,我希望它工作,因为当我在编辑文本中输入一个用于卢比的值时,它应该同时在编辑文本中显示转换后的值,更准确地说,我希望如果我想将 120 卢比转换为美元, 当我开始输入 120 时,作为 1,它应该在美元编辑文本中同时显示转换后的值,然后是 12,最后是 120。

我试过了——

if(editText.isFocusable()==true){
           editText.addTextChangedListener(new TextWatcher() {
               @Override
               public void beforeTextChanged(CharSequence s, int start, int count, int after) {
               }
               @Override
               public void onTextChanged(CharSequence s, int start, int before, int count) {
                   str=editText.getText().toString();
                   rs = Double.parseDouble(str);
                   rstodol = rs / 65;
                   str1 = Double.toString(rstodol);
                   editText1.setText(str1);
               }
               @Override
               public void afterTextChanged(Editable s) {
               }
           });

       }

        else if(editText1.isFocusable()==true){
           editText1.addTextChangedListener(new TextWatcher() {
               @Override
               public void beforeTextChanged(CharSequence s, int start, int count, int after) {
               }
               @Override
               public void onTextChanged(CharSequence s, int start, int before, int count) {
                   str=editText1.getText().toString();
                   dol=Double.parseDouble(str);
                   doltors=dol*65;
                   str2=Double.toString(doltors);
                   editText.setText(str2);
               }
               @Override
               public void afterTextChanged(Editable s) {
               }
           });
       }

我错在哪里?

侦听器应该添加一次,然后它们执行任务,直到它们被删除。 由于外部if块,您只添加一个侦听器。 相反,您要检查当前选定的编辑文本是否hasFocus()

editText = (EditText)findViewById(R.id.edittext);
editText1 = (EditText)findViewById(R.id.edittext1);
editText.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        if(editText.hasFocus()) {
            try {
                String str = editText.getText().toString();
                double rs = Double.parseDouble(str);
                double rstodol = rs / 65;
                String str1 = Double.toString(rstodol);
                editText1.setText(str1);
            }catch(NumberFormatException e){
                // invalid string entered
                editText1.setText("");
            }
        }
        }
        @Override
        public void afterTextChanged(Editable s) {
        }
    });

editText1.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        if(editText1.hasFocus()) {
            try {
                String str = editText1.getText().toString();
                double dol = Double.parseDouble(str);
                double doltors = dol * 65;
                String str2 = Double.toString(doltors);
                editText.setText(str2);
            }catch(NumberFormatException e){
                // invalid string entered
                editText.setText("");
            }
        }
    }
    @Override
    public void afterTextChanged(Editable s) {
    }
});

最新更新