需求场景
登陆成功后可以点击退出返回登陆页面,需要清除账号密码并且重新调整光标位置
或
每次都需要登陆的APP,登陆成功后保存账号,在有保存账号的情况下,自动将光标设置给输入密码的位置
问题
项目A中,调用接口后在子线程中写了password.requestFocus();
,没有什么问题.
在项目B中,使用本地登陆验证,代码如下:
if (有账号缓存) {
username.setText("xxxxxxxx");
password.requestFocus();
}
结果并不生效,后来使用runOnUiThread()也不生效.
解决方法
增加了一个延迟方法:
runDelayed(new Runnable() {
@Override
public void run() {
password.requestFocus();
}
}, 20);
延迟20ms(用户无感的短延迟),设置生效了.
具体原理没深究,但是搜了一下网上大家都是这么解决的
有知道原理的朋友留言告知一下谢谢.
网友评论