zoukankan      html  css  js  c++  java
  • 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);  
    

      这样就解决了这个问题了

  • 相关阅读:
    .net 使用 swagger 操作
    oracle 基础
    关于webapi跨域问题的一些坑坑
    sqlHelper
    微博数据接入开发
    mvc后台上传
    sql server 报错处理
    asp.net 微信开发(二)
    收集一些关于OI/ACM的奇怪的东西……
    LeetCode 229 Majority Element II
  • 原文地址:https://www.cnblogs.com/pangguoming/p/5788131.html
Copyright © 2011-2022 走看看