Android EditText 获得输入焦点 以及requestfocus()失效的问题
时间:2022-05-03
本文章向大家介绍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);
这样就解决了这个问题了
- C# Enum设计和使用的相关技巧
- 小程序如何利用更低成本获得高流量?
- 使用System.Net.Mail通过gmail发送电子邮件
- 删除 WordPress 导航菜单的多余 CSS 选择器(id或class)
- es6 对象的扩展
- 自定义WordPress 标签云小工具相关参数
- 检查.NET程序平台目标(Platform Target)工具CorFlags
- 哪些行业最适合抢驻小程序?
- WordPress 一键关闭/禁止页面评论功能
- 在一个.net sln中包含多个project,project引用同一个dll导致的错误
- Windows下安装MariaDB
- Quartz.net官方开发指南 第一课:使用Quartz.net
- Quartz.net官方开发指南 第二课:Jobs And Triggers
- 为你的WordPress 主题添加结构化数据/丰富文本摘要,高亮搜索结果(上)
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释