множественное редактирование текстового поля при проблемах с кликами - PullRequest
1 голос
/ 09 февраля 2020

Теперь я создал цифровую клавиатуру, и у меня есть несколько текстов для редактирования, и я установил щелчки для цифр, но они предназначены только для первого текста для редактирования, но я не могу установить его для других editTexts

Вот картинка, которая объясняет, что я имею в виду Я показываю, что при вводе четырех цифр фокус больше не требуется ни в каком тексте редактирования, и он работает, но я хочу, чтобы фокус вернулся, если мне нужно удалить все четыре цифры, как это сделать?

Вот код, который я использую

Основная активность. java

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;


import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;

public class MainActivity extends AppCompatActivity {

    Button btn0, btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9;
    EditText edit1, edit2, edit3, edit4;
    ImageButton imageButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        edit1 = findViewById(R.id.edit1);
        edit2 = findViewById(R.id.edit2);
        edit3 = findViewById(R.id.edit3);
        edit4 = findViewById(R.id.edit4);

        btn0 = findViewById(R.id.button0);
        btn1 = findViewById(R.id.button1);
        btn2 = findViewById(R.id.button2);
        btn3 = findViewById(R.id.button3);
        btn4 = findViewById(R.id.button4);
        btn5 = findViewById(R.id.button5);
        btn6 = findViewById(R.id.button6);
        btn7 = findViewById(R.id.button7);
        btn8 = findViewById(R.id.button8);
        btn9 = findViewById(R.id.button9);
        imageButton = findViewById(R.id.button_delete_delete);


        btn0.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                edit1.setText(btn0.getText());
            }
        });
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                edit1.setText(btn1.getText());
            }
        });
        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                edit1.setText(btn2.getText());
            }
        });
        btn3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                edit1.setText(btn3.getText());
            }
        });
        btn4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                edit1.setText(btn4.getText());
            }
        });
        btn5.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                edit1.setText(btn5.getText());
            }
        });
        btn6.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                edit1.setText(btn6.getText());
            }
        });
        btn7.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                edit1.setText(btn7.getText());
            }
        });
        btn8.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                edit1.setText(btn8.getText());
            }
        });
        btn9.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                edit1.setText(btn9.getText());

            }
        });
        imageButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                edit1.setText("");
                edit2.setText("");
                edit3.setText("");
                edit4.setText("");

            }
        });

        edit1.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) {
                    edit1.requestFocus();
                }
            }

            @Override
            public void afterTextChanged(Editable s) {
                if (s.length() == 1) {
                    edit2.requestFocus();
                }

                edit2.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) {
                            edit1.requestFocus();
                        }
                    }

                    @Override
                    public void afterTextChanged(Editable s) {
                        if (s.length() == 1) {
                            edit3.requestFocus();
                        }
                    }
                });
                edit3.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) {
                            edit1.requestFocus();
                        }
                    }

                    @Override
                    public void afterTextChanged(Editable s) {
                        if (s.length() == 1) {
                            edit4.requestFocus();
                        }
                    }
                });

                edit4.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) {
                            edit1.requestFocus();

                        }
                    }

                    @Override
                    public void afterTextChanged(Editable s) {
                        if (s.length() == 1) {
                            edit1.setFocusable(false);
                            edit1.setSelected(false);
                            edit2.setFocusable(false);
                            edit2.setSelected(false);
                            edit3.setFocusable(false);
                            edit3.setSelected(false);
                            edit4.setFocusable(false);
                            edit4.setSelected(false);
                        } else if (s.length() == 0) {
                            edit1.setFocusable(true);
                        }
                    }
                });
            }
        });
    }
}

1 Ответ

0 голосов
/ 11 февраля 2020

ViewGroup layout = (ViewGroup)findViewById(R.id.layout_container_buttons);
ViewGroup parrentViewTextBoxes = (ViewGroup)findViewById(R.id.layout_container_TextBoxes);
for (int i = 0; i < layout.getChildCount(); i++) {
View child = layout.getChildAt(i);
if(child instanceof Button)
{
Button button = (Button) child;
button.setText(i);
button. setOnClickListener
( new OnClickListener() {
@Override
public void onClick(View v) {
TextView textBox = (TextView) parrentViewTextBoxes.findViewWithTag(“edittext_”+i);
textBox.setText(i);
}
});
}
}
...