Android開發(fā)中requestfocus()無效的原因及解決辦法
前言
最近做公司項目的時候,經(jīng)常會遇到一個問題,就是我為某個控件如EditText設(shè)置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(),的話,有可能此時還沒把整個界面刷新好,導(dǎo)致requestFocus無效。
解決辦法
找到原因后就有解決辦法了,給他個延遲時間:
mPassWord.postDelayed(new Runnable() {
@Override
public void run() {
mPassWord.requestFocus();
}
}, 500);
這樣就解決了這個問題了。
PS:requestFocus() 無效的原因
setVisible(true); person.requestFocus();
也就是說requestFocus()應(yīng)該放在setVisible(true)的后面。
以上所述是小編給大家介紹的Android開發(fā)中requestfocus()無效的原因及解決辦法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
android開發(fā)教程之開機(jī)啟動服務(wù)service示例
如果開機(jī)啟動一個Activity,開機(jī)首先看的界面,是你的程序界面,如果為了,開機(jī)后也啟動你的程序,但是不顯示自己程序的界面,就要用Service服務(wù),下面是開機(jī)啟動服務(wù)service示例2014-03-03
Android動態(tài)加載布局實現(xiàn)技巧介紹
通過使用LayoutInflater 每次點擊按鈕時候去讀取布局文件,然后找到布局文件里面的各個VIEW 操作完VIEW 后加載進(jìn)我們setContentView 方面里面的要放的布局文件里面,每次動態(tài)加載文件必需調(diào)用 removeAllViews方法,清除之前的加載進(jìn)來的View2022-12-12
android ListView結(jié)合xutils3仿微信實現(xiàn)下拉加載更多
本篇文章主要介紹了android ListView結(jié)合xutils3仿微信實現(xiàn)下拉加載更多,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-11-11
實現(xiàn)Android studio設(shè)置自動導(dǎo)包及自動導(dǎo)包快捷鍵
這篇文章主要介紹了實現(xiàn)Android studio設(shè)置自動導(dǎo)包及自動導(dǎo)包快捷鍵的相關(guān)資料,需要的朋友可以參考下2017-05-05
Android EditText限制輸入字?jǐn)?shù)的方法
這篇文章主要介紹了Android EditText限制輸入字?jǐn)?shù)的方法,涉及Android針對EditText文本與字符串操作相關(guān)技巧,需要的朋友可以參考下2016-01-01
android 解析json數(shù)據(jù)格式的方法
這篇文章主要介紹了android 解析json數(shù)據(jù)格式的方法,有需要的朋友可以參考一下2014-01-01
Android實現(xiàn)應(yīng)用程序的閃屏效果
這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)應(yīng)用程序的閃屏效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07
Android ContentProvider獲取手機(jī)聯(lián)系人實例
這篇文章主要介紹了Android ContentProvider獲取手機(jī)聯(lián)系人實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02

