Android EditText 获得输入焦点 以及requestfocus()失效的问题

 最近做公司项目的时候,经常会遇到一个问题,就是我为某个控件如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);  

  这样就解决了这个问题了

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏非著名程序员

Android快速开发框架 roboguice

我记得推过一篇文章也是快速开发框架的,今天再来一篇! 1、roboguice 效果 ---- ? 图文无关 2、roboguice 说明 ---- robo...

21080
来自专栏增长技术

BaseRecyclerViewAdapterHelper

#如何使用它? 先在 build.gradle 的 repositories 添加:

78010
来自专栏Java后端生活

购物APP项目开发(1)——菜单开发

16240
来自专栏向治洪

android的RadioGroup讲解

这个主要是如何替换fragment的demo。效果图如下(下面的tabhost和上面的bar不属于这次的内容,这个是我做的一个应用程序框架的一部分,有需要的或者...

250100
来自专栏CodingBlock

Android学习笔记(七)两个Fragment简单跳转示例

  在前两篇博文中分别介绍了Fragment得基础和Fragment的生命周期,然而说了这么多Fragment到底怎么用呢以及我们为什么要使用Fragment?...

22680
来自专栏Android干货

Volley网络连接

30370
来自专栏Android知识点总结

1-AVI--Fragment基础使用

12920
来自专栏james大数据架构

Android Fragment完全解析

我们都知道,Android上的界面展示都是通过Activity实现的,Activity实在是太常用了,我相信大家都已经非常熟悉了,这里就不再赘述。 但是Acti...

23290
来自专栏Android干货

安卓开发_浅谈Notification(通知栏)

40680
来自专栏郭霖

Android Fragment完全解析,关于碎片你所需知道的一切

我们都知道,Android上的界面展示都是通过Activity实现的,Activity实在是太常用了,我相信大家都已经非常熟悉了,这里就不再赘述。 但是Acti...

21990

扫码关注云+社区

领取腾讯云代金券