使用editText.setSelection(position)定义光标位置时,应用崩溃。

时间:2019-01-08 10:38:11

标签: java android

目标是使用setSelection(int) EditText 的光标位置设置为2。 这是我的 RegisterActivity.java 的摘录:

 UserEmail = (EditText) findViewById(R.id.register_email);
 UserEmail.setSelection(2); //cursor position

这是 activity_register.xml

<EditText
        android:id="@+id/register_email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:inputType="textEmailAddress"
        android:background="@drawable/ab_transparent_example"
        android:padding="4dp"
        android:drawableStart="@drawable/ic_mail_outline_gray_24dp"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="17dp"
        android:layout_marginRight="17dp"/>

当我在int > 0中使用setSelection(int)(例如上面的代码中的2)时,应用程序崩溃。

java文件中是否有该方法的替代方法? xml本身内部是否有解决方法?

2 个答案:

答案 0 :(得分:3)

如果您的edittext为空,则会崩溃,因为您尝试将光标设置在大于edittext内部字符串长度的位置。

首先,请确保内部字符串的长度大于位置的长度。

示例:

String text = yourEditText.getText().toString();

if (desirablePosition < text.length()){
  yourEditText.setSelection(desirablePosition);
}

答案 1 :(得分:0)

将默认文本设置为大于2的编辑文本。要使工作集选择> 0,您的编辑文本应具有内容。