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

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

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

肥皂起泡泡 2021-12-22 20:35:43
无论我尝试做什么,我都无法跳转第三个编辑文本,如下图所示。我将 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;@Overrideprotected 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);}@Overridepublic void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {}@Overridepublic void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {}@Overridepublic void afterTextChanged(Editable editable) {    if (edt1.length() == 2) {        edt2.requestFocus();    }}}
查看完整描述

3 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

您还需要将侦听器设置为 edt2


    edt2.addTextChangedListener(this);

只需更换


    @Override

    public void afterTextChanged(Editable editable) {


        if(edt1.getText().hashCode() == editable.hashCode()){

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

                edt2.requestFocus();

            }

        }

        else if( edt2.getText().hashCode() == editable.hashCode()){

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

                edt3.requestFocus();

            }

        }

    }


查看完整回答
反对 回复 2021-12-22
?
蝴蝶不菲

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

XML 文件没有问题。只需在 MainActivity.java 中尝试以下代码


将 TextChangedListener 添加到第二个编辑文本


edt2.addTextChangedListener(this);                                                               



在 textwatcher 的 onTextChanged 方法中插入以下代码


@Override

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


}


@Override

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

        if(edt1.hasFocus())

    {

        if(edt1.getText().toString().length()==2)     //size as per your requirement

        {

            edt2.requestFocus();

        }

    }

    if(edt2.hasFocus())

    {

        if(edt2.getText().toString().length()==2)     //size as per your requirement

        {

            edt3.requestFocus();

        }

    }


}


@Override

public void afterTextChanged(Editable editable) {


}

我希望这个答案能解决你的问题:)


查看完整回答
反对 回复 2021-12-22
?
梦里花落0921

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

XML 文件没有问题。只需在 MainActivity.java 中尝试以下代码


将 TextChangedListener 添加到第二个编辑文本


edt2.addTextChangedListener(this);                                                               



在 textwatcher 的 onTextChanged 方法中插入以下代码


@Override

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


}


@Override

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

        if(edt1.hasFocus())

    {

        if(edt1.getText().toString().length()==2)     //size as per your requirement

        {

            edt2.requestFocus();

        }

    }

    if(edt2.hasFocus())

    {

        if(edt2.getText().toString().length()==2)     //size as per your requirement

        {

            edt3.requestFocus();

        }

    }


}


@Override

public void afterTextChanged(Editable editable) {


}

我希望这个答案能解决你的问题:)


查看完整回答
反对 回复 2021-12-22
  • 3 回答
  • 0 关注
  • 343 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号