为了账号安全,请及时绑定邮箱和手机立即绑定

在 EditText 内写入

在 EditText 内写入

牧羊人nacy 2023-09-13 10:50:28
我有两个 EdiText,当我在第一个 EdiText 中写入数字时,我需要将第二个 EdiText 设置为 162 - 第一个。如果需要重新输入第二个数字,则组件应重新计算第一个数字。如果我在第二个中写一些东西,第一个的行为必须与第二个完全相同。下面是我的代码,但它不起作用:    inputScoreWe = findViewById(R.id.inputScoreWe);    inputScoreYou = findViewById(R.id.inputScoreYou);    View.OnClickListener inputScoreListener = new View.OnClickListener() {        @Override        public void onClick(View view) {            try {                int inputScoreWeInteger = Integer.parseInt(inputScoreWe.getText().toString());                int inputScoreYouInteger = Integer.parseInt(inputScoreYou.getText().toString());                if (inputScoreWeInteger > 0) {                    inputScoreYouInteger = 162 - inputScoreWeInteger;                } else if (inputScoreYouInteger > 0) {                    inputScoreWeInteger = 162 - inputScoreYouInteger;                }                String s1 = inputScoreWeInteger + "";                String s2 = inputScoreYouInteger + "";                inputScoreWe.setText(s1);                inputScoreYou.setText(s2);            } catch (Exception e) {                Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_LONG).show();            }        }    };    inputScoreWe.setOnClickListener(inputScoreListener);    inputScoreYou.setOnClickListener(inputScoreListener);
查看完整描述

3 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

使用文本更改侦听器在每次更改值时触发


 inputScoreWe.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(s.length() > 0){

                      inputScoreYou.setText(162 - Integer.parseInt(inputScoreYou.getText().toString())+"");

                   }


                }


                @Override

                public void afterTextChanged(Editable s) {


                }

            });


查看完整回答
反对 回复 2023-09-13
?
杨魅力

TA贡献1811条经验 获得超6个赞

将您的代码替换为如下代码


        inputScoreWe = findViewById(R.id.inputScoreWe);

        inputScoreYou = findViewById(R.id.inputScoreYou);



        inputScoreWe.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 (s.length() > 0) {

                    inputScoreYou.setText(162 - Integer.parseInt(inputScoreYou.getText().toString()) + "");

                }


            }


            @Override

            public void afterTextChanged(Editable s) {


            }

        });



        inputScoreYou.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 (s.length() > 0) {

                    inputScoreWe.setText(162 - Integer.parseInt(inputScoreWe.getText().toString()) + "");

                }


            }


            @Override

            public void afterTextChanged(Editable s) {


            }

        });


查看完整回答
反对 回复 2023-09-13
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

尝试这个


brandET = findViewById(R.id.addCar_brand);

        modelET = findViewById(R.id.addCar_model);


        brandET.setOnFocusChangeListener(new View.OnFocusChangeListener() {

            @Override

            public void onFocusChange(View v, boolean hasFocus) {

                brandChange = hasFocus;

            }

        });


        modelET.setOnFocusChangeListener(new View.OnFocusChangeListener() {

            @Override

            public void onFocusChange(View v, boolean hasFocus) {

                modelChange = hasFocus;

            }

        });



        brandET.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 (brandChange && count > 0) {


                    int dataFromBrand = Integer.parseInt(s.toString());

                    modelET.setText((162 - dataFromBrand) + "");

                }

            }


            @Override

            public void afterTextChanged(Editable s) {


            }

        });



        modelET.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 (modelChange && count > 0) {


                    int dataFromModel = Integer.parseInt(s.toString());

                    brandET.setText((162 - dataFromModel) + "");

                }

            }


            @Override

            public void afterTextChanged(Editable s) {


            }

        });

这里brandET和modelET是你的两个编辑文本...brandChange和modelChange是两个全局布尔数据


查看完整回答
反对 回复 2023-09-13
  • 3 回答
  • 0 关注
  • 111 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信