猿问

Edittext 达到最大edittext 长度后跳转到下一个edittexts

无论我尝试做什么,我都无法跳转第三个编辑文本,如下图所示。我将 10 写入第一个 edittext,它会自动移动到第二个 edittext,但是当我写入 12 时,它不会移动到第三个 edittext。我尝试了几件事,但无法处理。我需要一个简单的解决方案来解决这个问题,最多 10-15 个编辑文本。有人可以帮助我了解语法吗?谢谢。

这是我的活动主要 xml


<EditText

    android:id="@+id/edittext1"

    android:layout_width="30dp"

    android:layout_height="wrap_content"

    android:textSize="20dp"

    android:maxLength="2"

    android:hint="1"

    android:layout_weight="1"/>

<EditText

    android:id="@+id/edittext2"

    android:layout_width="30dp"

    android:layout_height="wrap_content"

    android:textSize="20dp"

    android:maxLength="2"

    android:digits="0123456789 "

    android:hint="2"

    android:layout_weight="1"/>

<EditText

    android:id="@+id/edittext3"

    android:layout_width="30dp"

    android:layout_height="wrap_content"

    android:textSize="20dp"

    android:maxLength="2"

    android:digits="0123456789 "

    android:hint="3"

    android:layout_weight="1"/>

这是我的主要活动


package com.example.serkan.justtry;


import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.text.Editable;

import android.text.TextWatcher;

import android.widget.EditText;


public class MainActivity extends AppCompatActivity implements TextWatcher {

    EditText edt1;

    EditText edt2;

    EditText edt3;


@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);


    edt1=(EditText)findViewById(R.id.edittext1);

    edt2=(EditText)findViewById(R.id.edittext2);

    edt3=(EditText)findViewById(R.id.edittext3);


    edt1.addTextChangedListener(this);

}


@Override

public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {


}


@Override

public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {


}


@Override

public void afterTextChanged(Editable editable) {

    if (edt1.length() == 2) {

        edt2.requestFocus();

    }

}

}


肥皂起泡泡
浏览 344回答 3
3回答

慕盖茨4494581

您还需要将侦听器设置为 edt2&nbsp; &nbsp; edt2.addTextChangedListener(this);只需更换&nbsp; &nbsp; @Override&nbsp; &nbsp; public void afterTextChanged(Editable editable) {&nbsp; &nbsp; &nbsp; &nbsp; if(edt1.getText().hashCode() == editable.hashCode()){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (edt1.length() == 2) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; edt2.requestFocus();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; else if( edt2.getText().hashCode() == editable.hashCode()){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (edt2.length() == 2) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; edt3.requestFocus();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }

蝴蝶不菲

XML 文件没有问题。只需在 MainActivity.java 中尝试以下代码将 TextChangedListener 添加到第二个编辑文本edt2.addTextChangedListener(this);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;在 textwatcher 的 onTextChanged 方法中插入以下代码@Overridepublic void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {}@Overridepublic void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {&nbsp; &nbsp; &nbsp; &nbsp; if(edt1.hasFocus())&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; if(edt1.getText().toString().length()==2)&nbsp; &nbsp; &nbsp;//size as per your requirement&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; edt2.requestFocus();&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; if(edt2.hasFocus())&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; if(edt2.getText().toString().length()==2)&nbsp; &nbsp; &nbsp;//size as per your requirement&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; edt3.requestFocus();&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}@Overridepublic void afterTextChanged(Editable editable) {}我希望这个答案能解决你的问题:)

梦里花落0921

XML 文件没有问题。只需在 MainActivity.java 中尝试以下代码将 TextChangedListener 添加到第二个编辑文本edt2.addTextChangedListener(this);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;在 textwatcher 的 onTextChanged 方法中插入以下代码@Overridepublic void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {}@Overridepublic void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {&nbsp; &nbsp; &nbsp; &nbsp; if(edt1.hasFocus())&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; if(edt1.getText().toString().length()==2)&nbsp; &nbsp; &nbsp;//size as per your requirement&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; edt2.requestFocus();&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; if(edt2.hasFocus())&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; if(edt2.getText().toString().length()==2)&nbsp; &nbsp; &nbsp;//size as per your requirement&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; edt3.requestFocus();&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}@Overridepublic void afterTextChanged(Editable editable) {}我希望这个答案能解决你的问题:)
随时随地看视频慕课网APP

相关分类

Java
我要回答