如何使用两组 RadioButtons 在 EditText 中输入文本

How to input text in EditText with 2 groups of RadioButtons

我有两组单选按钮。我想在按下第一组的 btn1stDigitBrown1 时显示“1”,就像下面的代码一样,当按下第二组的 btn2ndDigitBlack0 时,它也应该在旁边显示一个数字刚刚写在 EditText 上的数字,例如“10”。当第 2 组的按钮被按下时(例如 btn2ndDigitBlack0)在第 1 组的按钮被按下之前,它应该自动显示在 EditText“10”上。现在,当按下第二组的 RadioButton 时,它会重写已经写在 EditText 上的数字。这是我的代码:

    View.OnClickListener listener1stDigit = new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            switch (view.getId()) {
                case R.id.btn1stDigitBrown1:
                    ((EditText)findViewById(R.id.resistText)).setText("1");
                    break;
                case R.id.btn1stDigitRed2:
                    ((EditText)findViewById(R.id.resistText)).setText("2");
                    break;
                case R.id.btn1stDigitOrange3:
                    ((EditText)findViewById(R.id.resistText)).setText("3");
                    break;
                case R.id.btn1stDigitYellow4:
                    ((EditText)findViewById(R.id.resistText)).setText("4");
                    break;
                case R.id.btn1stDigitGreen5:
                    ((EditText)findViewById(R.id.resistText)).setText("5");
                    break;
                case R.id.btn1stDigitBlue6:
                    ((EditText)findViewById(R.id.resistText)).setText("6");
                    break;
                case R.id.btn1stDigitViolet7:
                    ((EditText)findViewById(R.id.resistText)).setText("7");
                    break;
                case R.id.btn1stDigitGrey8:
                    ((EditText)findViewById(R.id.resistText)).setText("8");
                    break;
                case R.id.btn1stDigitWhite9:
                    ((EditText)findViewById(R.id.resistText)).setText("9");
                    break;
                default:
            }
        }
    };

    btn1stDigitBrown1.setOnClickListener(listener1stDigit);
    btn1stDigitRed2.setOnClickListener(listener1stDigit);
    btn1stDigitOrange3.setOnClickListener(listener1stDigit);
    btn1stDigitYellow4.setOnClickListener(listener1stDigit);
    btn1stDigitGreen5.setOnClickListener(listener1stDigit);
    btn1stDigitBlue6.setOnClickListener(listener1stDigit);
    btn1stDigitViolet7.setOnClickListener(listener1stDigit);
    btn1stDigitGrey8.setOnClickListener(listener1stDigit);
    btn1stDigitWhite9.setOnClickListener(listener1stDigit);

    View.OnClickListener listener2ndDigit = new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            switch (view.getId()) {
                case R.id.btn2ndDigitBlack0:
                    ((EditText)findViewById(R.id.resistText)).setText("0");
                    break;
                case R.id.btn2ndDigitBrown1:
                    ((EditText)findViewById(R.id.resistText)).setText("1");
                    break;
                case R.id.btn2ndDigitRed2:
                    ((EditText)findViewById(R.id.resistText)).setText("2");
                    break;
                case R.id.btn2ndDigitOrange3:
                    ((EditText)findViewById(R.id.resistText)).setText("3");
                    break;
                case R.id.btn2ndDigitYellow4:
                    ((EditText)findViewById(R.id.resistText)).setText("4");
                    break;
                case R.id.btn2ndDigitGreen5:
                    ((EditText)findViewById(R.id.resistText)).setText("5");
                    break;
                case R.id.btn2ndDigitBlue6:
                    ((EditText)findViewById(R.id.resistText)).setText("6");
                    break;
                case R.id.btn2ndDigitViolet7:
                    ((EditText)findViewById(R.id.resistText)).setText("7");
                    break;
                case R.id.btn2ndDigitGrey8:
                    ((EditText)findViewById(R.id.resistText)).setText("8");
                    break;
                case R.id.btn2ndDigitWhite9:
                    ((EditText)findViewById(R.id.resistText)).setText("9");
                    break;
                default:
            }
        }
    };

    btn2ndDigitBlack0.setOnClickListener(listener2ndDigit);
    btn2ndtDigitBrown1.setOnClickListener(listener2ndDigit);
    btn2ndDigitRed2.setOnClickListener(listener2ndDigit);
    btn2ndDigitOrange3.setOnClickListener(listener2ndDigit);
    btn2ndDigitYellow4.setOnClickListener(listener2ndDigit);
    btn2ndDigitGreen5.setOnClickListener(listener2ndDigit);
    btn2ndDigitBlue6.setOnClickListener(listener2ndDigit);
    btn2ndDigitViolet7.setOnClickListener(listener2ndDigit);
    btn2ndDigitGrey8.setOnClickListener(listener2ndDigit);
    btn2ndDigitWhite9.setOnClickListener(listener2ndDigit);

setText(...) 重写 TextView 中的文本。要在末尾添加文本,请使用 append(...)

例如:

TextView textView = findViewById<TextView>(R.id.some_text_view);
textView.setText("1"); //text contain 1
textView.setText("2"); //text contain 2
textView.setText("3"); //text contain 3
textView.append("1"); //text contain 31
textView.append("2"); //text contain 312
...

我认为你需要做的是学习如何操作字符串 你应该阅读 this

你应该在第二个监听器中做的是连接新数字

switch (view.getId()) {
     case R.id.btn2ndDigitBlack0: {
         EditText editText = ((EditText)findViewById(R.id.resistText))
         String oldString = editText.getText()
         if (oldString.length <= 1) {
            editText.setText(oldString + "0")
         } else {
             editText.setText(oldString.substring(0, 1) + "0")
         }
         }
     ...