使用自定义键盘在edittext中插入值

时间:2018-03-09 07:41:42

标签: android

我在一个应用程序上工作,我有9个edittext和一个我想要的自定义键盘,当我在一个选定的edittext中输入一个数字时,这个数字写得很好,例如,如果我想在我的edittext1中写12,它将是21和我也希望数字不要在其他edittext中重复,例如,当我尝试在剩余的8个edittext中输入另一个时间时,我给edittext1的值是11这个11什么都不做。我尝试使用代码,但是当我在edittext1中键入1并尝试在edittext 2中键入11时,没有什么是动画,它告诉我这里重复1次是我使用的代码

public void editTextWatcher(final EditText edt) {
    edt.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, 
   int after) {

        }

        @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void afterTextChanged(Editable s) {

            edt.removeTextChangedListener(this);
            edt.setText("");
            edt.addTextChangedListener(this);

            ArrayList<String> texts = new ArrayList<String>();
            texts.add(et1.getText().toString());
            texts.add(et2.getText().toString());
            texts.add(et3.getText().toString());
            texts.add(et4.getText().toString());
            texts.add(et5.getText().toString());
            texts.add(et6.getText().toString());
            texts.add(et7.getText().toString());
            texts.add(et8.getText().toString());
            texts.add(et9.getText().toString());

            for (String text : texts) {
                if (s.toString().equals(text)) {
                    if (s.toString().equals("")) {
                        return;
                    }

                    AlphaAnimation animation1 = new AlphaAnimation(0.2f, 1.0f);
                    animation1.setDuration(70);
                    animation1.setStartOffset(500);
                    animation1.setFillAfter(true);
                    edt.startAnimation(animation1);
                    edt.removeTextChangedListener(this);
                    edt.addTextChangedListener(this);
                    afficheerr1();

                    return;

                } 
            }

            edt.removeTextChangedListener(this);
            edt.setText(s.toString());
            edt.addTextChangedListener(this);

        }
    });

和onCreate中的代码

    editTextWatcher(et1);
    editTextWatcher(et2);
    editTextWatcher(et3);
    editTextWatcher(et4);
    editTextWatcher(et5);
    editTextWatcher(et6);
    editTextWatcher(et7);
    editTextWatcher(et8);
    editTextWatcher(et9);

我尝试了好几次,但找不到我想要的解决方案......

1 个答案:

答案 0 :(得分:0)

你可以这样做 -
首先将所有EditText放在一个数组中 -

today="$( date +¨%Y%m%d" )"
number=0

while test -e ¨$today$suffix.txt¨; do
    (( ++number ))
    suffix=¨$( printf -- %02d ¨$number¨ )
done

fname=¨$today$suffix.txt¨

printf ´Will use ¨%s¨ as filename\n´ ¨$fname¨
printf -c  24m /tmp/testf > ¨$fname¨

这可能对您有所帮助