VIVO手机上del键无效OnKeyListener不响应的原因及解决方法

在修改交易密码界面用到一个自定义输入框

类似这种(原谅丑了点~)

结果昨天有用户反馈在VIVO手机上回出现,Del键无效的问题~~~

最后发现是:EdiText的OnKeyListener没有响应。

最后搜搜了一下,找到了解决方案:重写EdiTextView的InputConnectionWrapper的方法后解决了问题:

代码如下:

public class ZanyEditText extends EditText {
  private OnDelKeyEventListener delKeyEventListener;
  public ZanyEditText(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
  }
  public ZanyEditText(Context context, AttributeSet attrs) {
    super(context, attrs);
  }
  public ZanyEditText(Context context) {
    super(context);
  }
  @Override
  public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
    return new ZanyInputConnection(super.onCreateInputConnection(outAttrs),
        true);
  }
  private class ZanyInputConnection extends InputConnectionWrapper {
    public ZanyInputConnection(InputConnection target, boolean mutable) {
      super(target, mutable);
    }
    @Override
    public boolean sendKeyEvent(KeyEvent event) {
      if (event.getAction() == KeyEvent.ACTION_DOWN
          && event.getKeyCode() == KeyEvent.KEYCODE_DEL) {
        if (delKeyEventListener != null) {
          delKeyEventListener.onDeleteClick();
          return true;
        }
      }
      return super.sendKeyEvent(event);
    }
    @Override
    public boolean deleteSurroundingText(int beforeLength, int afterLength) {
      if (beforeLength == 1 && afterLength == 0) {
        return sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN,
            KeyEvent.KEYCODE_DEL))
            && sendKeyEvent(new KeyEvent(KeyEvent.ACTION_UP,
            KeyEvent.KEYCODE_DEL));
      }
      return super.deleteSurroundingText(beforeLength, afterLength);
    }
  }
  /**
   *
   * 功能描述: <br>
   * 〈功能详细描述〉
   *
   * @param delKeyEventListener EditText删除回调
   */
  public void setDelKeyEventListener(OnDelKeyEventListener delKeyEventListener) {
    this.delKeyEventListener = delKeyEventListener;
  }
  public interface OnDelKeyEventListener {
    void onDeleteClick();
  }
}

参考:http://stackoverflow.com/questions/4886858/android-edittext-deletebackspace-key-event%22

以上所述是小编给大家介绍的VIVO手机上del键无效OnKeyListener不响应的原因及解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • VIVO手机上del键无效OnKeyListener不响应的原因及解决方法

    在修改交易密码界面用到一个自定义输入框 类似这种(原谅丑了点~) 结果昨天有用户反馈在VIVO手机上回出现,Del键无效的问题~~~ 最后发现是:EdiText的OnKeyListener没有响应. 最后搜搜了一下,找到了解决方案:重写EdiTextView的InputConnectionWrapper的方法后解决了问题: 代码如下: public class ZanyEditText extends EditText { private OnDelKeyEventListener delKey

  • MySQL无法创建外键的原因及解决方法

    关联2张表时出现了无法创建外键的情况,从这个博客看到,问题出在第六点的Charset和Collate选项在表级和字段级上的一致性上.我的2张表的编码charset和collate不一致,2张表都执行执行SQL语句: alter table 表名 convert to character set utf8; 完美解决问题: ps:下面看下MySQL无法创建外键.查询外键的属性 MyISAM 和InnoDB 讲解 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各

  • Springboot 跨域配置无效及接口访问报错的解决方法

    跨域配置如下,Springboot 版本为 2.4.1 ///跨域访问配置 @Configuration public class CorsConfig { private CorsConfiguration buildConfig() { CorsConfiguration corsConfiguration = new CorsConfiguration(); corsConfiguration.setAllowCredentials(true); //sessionid 多次访问一致 co

  • el-form resetFields无效和validate无效的可能原因及解决方法

    目录 问题导入 简单实例 1.官方案例 2.个人案例 resetFields失效及解决办法 validate失效及解决办法 3.model is required for validate to work! 结尾 问题导入 在使用 el-form 过程中,尤其是表单验证这一块,官方提供的 reserFields 方法以及验证方面存在一些坑,在此记录一下,给大家提供可能的解决办法. 简单实例 1.官方案例 先来看看官方提供的案例,对应的官网 表单验证 对应的代码 <el-form :model=&qu

  • MySQL主键自增会遇到的坑及解决方法

    目录 1. 为什么不用 UUID 2. 主键自增的问题 2.1 数据插入的三种形式 2.2 innodb_autoinc_lock_mode 2.3 实践 3. 小结 在上篇文章中,松哥和小伙伴们分享了 MySQL 的聚簇索引,也顺便和小伙伴们分析了为什么在 MySQL 中主键不应该使用随机字符串.但是主键不用随机字符串用什么?主键自增?主键自增就是最佳方案吗?有没有其他坑?今天我们就来讨论下这个话题. 1. 为什么不用 UUID 经过上篇文章的介绍,我们知道在 MySQL 中,主键索引就是聚簇

  • Linux中Oracle的sqlplus下退格和Del键无效的问题解决

    PS:近来因工作需要业余在学习oracle,发现通过SecureCRT或putty等SSH客户端远程登录Linux下oracle的sqplus时,输错字符后按Backspace键或Del键删除时,会出现^H或其他乱七八糟的的字符,感觉非常别扭不习惯,虽然可以通过Ctrl+Backspace组合键实现删除功能,但是严重影响使用效率.google了一番,终于完美解决此问题.总结记录如下,本文是此问题最完整的总结: 乱七八糟的字符如图: 一.SecureCRT终端里的解决方法:(不完美) 在Secur

  • sql2005 本地计算机上的SQL SERVER服务启动后又停止了解决方法

    本方法主要是解决SQL Server运行过程中出现的"本地计算机上的MSSQLSERVER服务启动后又停止了.一些服务自动停止,如果它们没有什么可做的"解决方法. 笔者ASP运行环境:操作系统为Windows XP SP2,IIS的版本为默认的5.1,数据库为SQL Server 2005(MDAC版本为2.8) 一.出现"本地计算机上的MSSQLSERVER服务启动后又停止了.一些服务自动停止,如果它们没有什么可做的" 1.开始-->管理管理工具-->

  • IDEA导入外部项目报Error:java: 无效的目标发行版: 11的解决方法

    错误展示: Information:java: Errors occurred while compiling module 'employee-managemen' Information:javac 1.8.0_144 was used to compile java sources Information:2020/9/1 12:03 - Build completed with 1 error and 0 warnings in 2 s 5 ms Error:java: 无效的目标发行版

  • Oracle Index索引无效的原因与解决方法

    索引无效原因 最近遇到一个Oracle SQL语句的性能问题,修改功能之前的运行时间平均为0.3s,可是添加新功能后,时间达到了4~5s.虽然几张表的数据量都比较大(都在百万级以上),但是也都有正确创建索引,不知道到底慢在了哪里,下面展开调查. 经过几次排除,把问题范围缩小在索引上,首先在确定索引本身没有问题的前提下,考虑索引有没有被使用到,那么新的问题来了,怎么知道指定索引是否被启用. 判断索引是否被执行 1. 分析索引 即将索引至于监控状态下,对索引进行分析.如下对 ID_TT_SHOHOU

  • windows7下启动mysql服务出现服务名无效的原因及解决方法

    问题原因:mysql服务没有安装. 解决办法: 在 mysql bin目录下 以管理员的权限 执行 mysqld -install命令 然后仍然以管理员的权限 net start mysql 开启Mysql服务了. 附卸载mysql服务的方法. 1.以管理员的权限 net stop mysql ,关闭mysql服务 2.以管理员的权限 mysqld -remove ,卸载mysql服务

随机推荐