zoukankan      html  css  js  c++  java
  • Android开发 EditText按回车按键后出现 focus search returned a view that wasn't able to take focus! 错误

    问题描述

      将EditText这个View成为了ListView或者RecyclerView的item时,在按输入法的回车/下一步/next时会出现的 focus search returned a view that wasn't able to take focus!的报错. 

    问题原因

      因为在按下回车键后,焦点会自动切换到下一个EditText上.这个时候如果你隐藏或者本身未加载下一个EditText.就出现这个报错. 报错的意思就是我的焦点目标丢失了,找不到下一个EditText.

    解决办法

    第一种:

      在EditText属性里设置 android:imeOptions="actionUnspecified" . imeOptions就是控制回车键具体作用的属性

    <EditText
            android:id="@+id/title_content"
            android:layout_width="0dp"
            android:layout_height="60dp"
            android:hint="请输入标题"
            android:singleLine="true"
            android:maxLength="20"
            android:inputType="text"
            android:imeOptions="actionUnspecified"
            app:layout_constraintTop_toBottomOf="@id/cover_barrier"
            app:layout_constraintLeft_toRightOf="@id/title"
            app:layout_constraintRight_toRightOf="parent"/>

      如果actionUnspecified属性设置后依然会报错,你可以尝试另外一个属性actionNone

    第二种:

      这种办法就是监听编辑器操作,然后将回车操作写成自己需要的功能(将回车键或者其他键值取代成自己想要实现的逻辑).或者直接不写... 这种方式比较简单暴力

                mEditView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
                    @Override
                    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                        return true;
                    }
                });

    注意需要返回 true 表示你已经处理过这个事件了.

  • 相关阅读:
    ASP.NET 2.0服务器控件开发之基本概念篇
    ASP.NET 2.0的URL映射的实现方法
    Asp.net中防止用户多次登录的方法
    SSRS:使用SQL2008教程学习Reporting Services之数据库AdventureWorks2008问题_学习笔记1
    ASP.NET服务器控件编程之热身运动
    ASP.NET2.0服务器控件开发之实现事件
    datalist 或者repeater分页
    .Net 上传图片加水印
    datalist 全选
    深入理解JavaScript中的函数
  • 原文地址:https://www.cnblogs.com/guanxinjing/p/11354390.html
Copyright © 2011-2022 走看看