最近做公司项目的时候,经常会遇到一个问题,就是我为某个控件如EditText设置requestfocus()的时候不管用,比如说登陆的时候,我判断下用户输入的密码,如果正确就登陆,错误就提示密码错误,并且输入框获取焦点,但是实际中确不起作用

package com.example.hfs.requestfocusdemo;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private EditText mUserName,mPassWord; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); initView(); } private void initView() {
mUserName= (EditText) this.findViewById(R.id.et_username);
mPassWord= (EditText) this.findViewById(R.id.et_password); mPassWord.setOnClickListener(this);
} @Override
public void onClick(View view) {
if (!"123456".equals(mPassWord.getText().toString())){
Toast.makeText(this,"密码错误,请重新输入",Toast.LENGTH_SHORT).show();
mPassWord.requestFocus();
}else{
startActivity(new Intent(this,MainActivity.class));
Toast.makeText(this,"登陆成功",Toast.LENGTH_SHORT).show();
finish();
}
}
}

  

原因

查资料分析了一下,可能是以下问题: 
Android加载刷新UI的时候,是从左到右,从上到下的顺序,正在加载的过程中,如果此时requestFocus(),的话,有可能此时还没把整个界面刷新好,导致requestFocus无效。

解决办法

找到原因后就有解决办法了,给他个延迟时间:

mPassWord.postDelayed(new Runnable() {
  @Override
  public void run() {
    mPassWord.requestFocus();
  }
}, 500);

  这样就解决了这个问题了

Android EditText 获得输入焦点 以及requestfocus()失效的问题的更多相关文章

  1. Android EditText判断输入的字符串是否为数字(包含小数点)

    有时候项目需要获取EditText所输入的字符串为纯数字(含小数),一般情况下在xml中设置EditText的的属性(我是直接设置digits为数字和小数点,即digits="0123456 ...

  2. Android EditText的输入监听,输入字符的动态获取

    http://itindex.net/detail/38974-android-edittext-%E7%9B%91%E5%90%AC 有时候我们可能会用到时时的监听EditText输入字符的时时监听 ...

  3. android Edittext自定义输入字符和类型

    android提供了两种方式 一种是setInputType 一种是setKeyListener 直接上代码,有注释 import android.app.Activity; import andro ...

  4. (转)Android EditText限制输入字符的5种实现方式

    最近项目要求限制密码输入的字符类型, 例如不能输入中文.   现在总结一下EditText的各种实现方式,  以比较各种方法的优劣. 第一种方式:  设置EditText的inputType属性,可以 ...

  5. Android EditText限制输入一些固定字符的属性

    android:digits="abcdefghijklmnopqrstuvwxyz1234567890" 仅仅能输入这些

  6. Android EditText 限制输入字符

    今天为简单的登录界面的输入框(用户名.密码框,验证码),均为EditText框,做输入限制,不能有空格,不能有一些特殊字符,不多说,直接上代码: /** * 禁止EditText输入空格 * * @p ...

  7. Android EditText 限制输入为ip类型

    editText.setInputType(InputType.TYPE_CLASS_NUMBER); String digits = "0123456789."; editTex ...

  8. Android EditText自动弹出输入法焦点

    http://mobile.51cto.com/aprogram-403138.htm 1. 看一个manifest中Activity的配置,如果这个页面有EditText,并且我们想要进入这个页面的 ...

  9. Android EditText截获与监听输入事件

      Android EditText截获与监听输入事件共有2种方法: 1.第一种方法:使用setOnKeyListener(),不过这种方式只能监听硬键盘事件. edittext.setOnKeyLi ...

随机推荐

  1. SqlSever基础 right函数 从右边开始,截取字符串

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  2. uTenux——重新整理底层驱动库

    重新整理底层驱动库 1. 整理chip.h 在chip.h文件中的07----13的宏定义设置位如下,这样我们就不用在工程配中定义sam3s4c这个宏了,为我们以后通用少了一件麻烦事. //#if d ...

  3. 用ubuntu下载电影:磁力链接,torrent,迅雷链接

    用ubuntu下载电影:磁力链接,torrent,迅雷链接 操作系统:Ubuntu 14.04 64位 需要软件:Ktorent, Amule 安装软件: sudo apt-get install k ...

  4. 数独Sudoku

    数独(すうどく,Sūdoku),是源自18世纪瑞士发明,流传到美国,再由日本发扬光大的一种数学游戏.是一种运用纸.笔进行演算的逻辑游戏.玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并 ...

  5. [SAP ABAP开发技术总结]OLE

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  6. HDU 1728 逃离迷宫

    [题目描述 - Problem Description] 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,glo ...

  7. 详解 ASP.NET异步

    在前文中,介绍了.NET下的多种异步的形式,在WEB程序中,天生就是多线程的,因此使用异步应该更为谨慎.本文将着重展开ASP.NET中的异步. [注意]本文中提到的异步指的是服务器端异步,而非客户端异 ...

  8. 键盘ctrl+shift不能切换输入法

    1.首先检查输入法是否被卸载,如没被卸载: 2.使用下面如图方法进行设置

  9. js 读写cookie。不同路径会储存各自的cookie。而 在v.net环境下读写是在 / 根目录。

    所以如果全站不分path 的 话.应该显示的写上 path .设置为根目录 function setCookie(name, value) { document.cookie = name + &qu ...

  10. [转载] goroutine背后的系统知识

    原文: http://www.sizeofvoid.net/goroutine-under-the-hood/ 文章写的非常好, 对内部原理解释的非常清楚, 是我喜欢的风格, 感谢作者的精彩文章. = ...