需求場景
登陸成功后可以點擊退出返回登陸頁面,需要清除賬號密碼并且重新調(diào)整光標(biāo)位置
或
每次都需要登陸的APP,登陸成功后保存賬號,在有保存賬號的情況下,自動將光標(biāo)設(shè)置給輸入密碼的位置
問題
項目A中,調(diào)用接口后在子線程中寫了password.requestFocus();
,沒有什么問題.
在項目B中,使用本地登陸驗證,代碼如下:
if (有賬號緩存) {
username.setText("xxxxxxxx");
password.requestFocus();
}
結(jié)果并不生效,后來使用runOnUiThread()也不生效.
解決方法
增加了一個延遲方法:
runDelayed(new Runnable() {
@Override
public void run() {
password.requestFocus();
}
}, 20);
延遲20ms(用戶無感的短延遲),設(shè)置生效了.
具體原理沒深究,但是搜了一下網(wǎng)上大家都是這么解決的
有知道原理的朋友留言告知一下謝謝.