Android開發(fā)中requestfocus()無效的原因及解決辦法
前言
最近做公司項(xiàng)目的時(shí)候,經(jīng)常會(huì)遇到一個(gè)問題,就是我為某個(gè)控件如EditText設(shè)置requestfocus()的時(shí)候不管用,比如說登陸的時(shí)候,我判斷下用戶輸入的密碼,如果正確就登陸,錯(cuò)誤就提示密碼錯(cuò)誤,并且輸入框獲取焦點(diǎn),但是實(shí)際中確不起作用
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,"密碼錯(cuò)誤,請(qǐng)重新輸入",Toast.LENGTH_SHORT).show();
mPassWord.requestFocus();
}else{
startActivity(new Intent(this,MainActivity.class));
Toast.makeText(this,"登陸成功",Toast.LENGTH_SHORT).show();
finish();
}
}
}
原因
查資料分析了一下,可能是以下問題:
Android加載刷新UI的時(shí)候,是從左到右,從上到下的順序,正在加載的過程中,如果此時(shí)requestFocus(),的話,有可能此時(shí)還沒把整個(gè)界面刷新好,導(dǎo)致requestFocus無效。
解決辦法
找到原因后就有解決辦法了,給他個(gè)延遲時(shí)間:
mPassWord.postDelayed(new Runnable() {
@Override
public void run() {
mPassWord.requestFocus();
}
}, 500);
這樣就解決了這個(gè)問題了。
PS:requestFocus() 無效的原因
setVisible(true); person.requestFocus();
也就是說requestFocus()應(yīng)該放在setVisible(true)的后面。
以上所述是小編給大家介紹的Android開發(fā)中requestfocus()無效的原因及解決辦法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Android開發(fā)之Notification手機(jī)狀態(tài)欄通知用法實(shí)例分析
這篇文章主要介紹了Android開發(fā)之Notification手機(jī)狀態(tài)欄通知用法,結(jié)合實(shí)例形式分析了Android Notification手機(jī)狀態(tài)欄通知的常見函數(shù)、功能及使用技巧,需要的朋友可以參考下2019-03-03
Android中ScrollView嵌套GridView的解決辦法
前些日子在開發(fā)中用到了需要ScrollView嵌套GridView的情況,由于這兩款控件都自帶滾動(dòng)條,當(dāng)他們碰到一起的時(shí)候便會(huì)出問題,即GridView會(huì)顯示不全。下面小編給大家分享下解決方案,需要的朋友可以參考下2017-04-04
Android中解決WebView上下滑動(dòng)監(jiān)聽問題
本篇文章主要介紹了Android中解決WebView滑動(dòng)監(jiān)聽問題,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04
Android項(xiàng)目中使用Eclipse導(dǎo)出jar文件的操作方法
文章講述了如何使用Eclipse將Android項(xiàng)目打包成jar文件,并詳細(xì)解答了在打包過程中遇到的問題,如如何處理依賴的jar或library,以及如何解決在其他項(xiàng)目中引用時(shí)出現(xiàn)的NoClassDefFoundError錯(cuò)誤2025-02-02
android自定義Toast設(shè)定顯示時(shí)間
這篇文章主要為大家詳細(xì)介紹了android自定義Toast設(shè)定顯示時(shí)間,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08
Android自定義View之簡(jiǎn)約風(fēng)歌詞控件實(shí)戰(zhàn)指南
一些接觸Android不久的朋友對(duì)自定義View都有一絲畏懼感,總感覺這是一個(gè)比較高級(jí)的技術(shù),但其實(shí)自定義View并不復(fù)雜,有時(shí)候只需要簡(jiǎn)單幾行代碼就可以完成了,這篇文章主要給大家介紹了關(guān)于Android自定義View之簡(jiǎn)約風(fēng)歌詞控件的相關(guān)資料,需要的朋友可以參考下2021-07-07

