当前位置: 首页 > 知识库问答 >
问题:

Android文本监听器上的编辑文本崩溃程序

傅志文
2023-03-14

当编辑文本上的回车键被按下时,我试图简单地向listview添加一些内容。我在按钮上也有一个点击监听器,它将调用相同的函数将单词添加到listview。按钮工作正常,直到我添加了文本监视程序。现在,如果我调用的函数在监听器中,如果我按回车键或按下按钮,整个应用程序就会崩溃。如果我从文本监视程序中删除类,那么如果我按下回车键,应用程序不会崩溃,但如果我按下按钮,它会崩溃。有什么想法吗?我已经很久没用Android了,所以我完全卡住了。

XML

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/myEditText"
    android:hint="Enter a new item"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_toLeftOf="@+id/myDoneButton"
    android:layout_toStartOf="@+id/myDoneButton"
    android:layout_above="@+id/myListView"/>

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Add Item"
    android:id="@+id/myDoneButton"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:onClick="onAddItem"
    /> 

JAVA

//On enter listener for mEditText (within oncreate)
mEditText.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) {

        }

        @Override
        public void afterTextChanged(Editable s) {
            if (s.charAt(s.length() - 1) == '\n') { 
                onAddItem(mListView);
                Log.d("TEST RESPONSE", "Enter was pressed");
            }
        }
    });

//Outside of oncreate
public void onAddItem(View v) {
    String itemText = mEditText.getText().toString();
    itemsAdapter.add(itemText);
    mEditText.setText("");
    writeItems();
}

以下是Logcat提供的相关信息

04-11 16:26:23.619 13377-13377/com.ivieinc.groceryapp E/AndroidRuntime:
FATAL EXCEPTION: main Process: com.ivieinc.groceryapp, PID: 13377                          java.lang.IllegalStateException: Could not execute method for android:onClick 
... (removed for clarity)                                                                 
Caused by: java.lang.reflect.InvocationTargetException 
... (removed for clarity)
Caused by: java.lang.IndexOutOfBoundsException: charAt: -1 < 0                                                                       
at android.text.SpannableStringBuilder.charAt(SpannableStringBuilder.java:117)
at com.ivieinc.groceryapp.MainActivity$1.afterTextChanged(MainActivity.java:69)
at android.widget.TextView.sendAfterTextChanged(TextView.java:8007)
at android.widget.TextView.setText(TextView.java:4351)
at android.widget.TextView.setText(TextView.java:4199)
at android.widget.EditText.setText(EditText.java:84)
at android.widget.TextView.setText(TextView.java:4174)
at com.ivieinc.groceryapp.MainActivity.onAddItem(MainActivity.java:108)
... (removed for clarity)

共有1个答案

沈思博
2023-03-14

您的错误在这里:

if (s.charAt(s.length() - 1) == '\n') { 

由于您试图获取的字符长度是空的, 代码是空的。。。

您必须验证可编辑的属性

 类似资料:
  • 我正在开发一个Android聊天应用程序。一切运作良好,但除了一件事;我想设置一个布局的可见性消失,然后设置一个不同的布局可见时,用户开始输入编辑文本,就像在WhatsApp上实现的。但是我似乎想不明白。任何帮助都将不胜感激 基本上,我想做的是设置一个布局的可见性,该布局包含一个图像按钮,用于将图像上载到gone,然后显示一个布局,该布局包含一个图像按钮,用于在用户开始键入时将edittext中的

  • 有人能提出什么解决办法吗?

  • 我有一个EditText,当我将它设置为空并点击按钮时,我的应用程序崩溃了。 当我在Android Monitor中查看它时,它指向一行: 这是我的代码: 线性布局 我的Java代码:

  • 我在一个编辑文本上使用textChangedListener来显示/隐藏一个浮动的动作按钮。 一切都按预期工作。如果编辑文本不为空,则显示 fab,如果为空,则隐藏 fab。 但是我注意到,在使用退格时,要删除输入的文本,删除第一个空格会触发隐藏fab,然后快速fab显示,因为editText不为空。 我环顾四周,没有看到任何关于这方面的信息。所以我一定做错了什么,但我不确定是什么。 下面是我的实

  • Django集成UEditor (封装成应用) 百度富文本编辑器 http://ueditor.baidu.com/website/ 使用效果 测试环境 ubuntu 16.04 python3.5.2 django1.11.7 目前测试解决了出现的以下两个问题,都是python版本问题 error1 # name 'file' is not defined controller.py 68行

  • JOE  ( Joe's Owner Editor) 是一个非常著名的基于 Linux 控制台下的文本编辑器