Android開発におけるrequestfocus()無効な原因と解決方法
2111 ワード
前言
最近会社のプロジェクトをする時、よく問題があります。つまり、EditTextにrequestfocus()を設定する時は使えません。たとえばログインする時、ユーザーが入力したパスワードを判断します。正しく登録すれば、間違ったパスワードを提示します。そして、入力枠に焦点を合わせますが、実際には機能しません。
資料を調べて分析しましたが、次の問題かもしれません。
AndroidがUIを更新するときは、左から右にかけて、上から下までの順にローディングしていますが、このときrequest Focus()をローディングしたら、まだ画面全体を更新していない可能性があります。
解決策
原因が見つかったら解決方法があります。彼に遅延時間を与えます。
PS:request Focus()が無効になった理由
以上は小编が绍介したAndroid开発中の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を更新するときは、左から右にかけて、上から下までの順にローディングしていますが、このときrequest Focus()をローディングしたら、まだ画面全体を更新していない可能性があります。
解決策
原因が見つかったら解決方法があります。彼に遅延時間を与えます。
mPassWord.postDelayed(new Runnable() {
@Override
public void run() {
mPassWord.requestFocus();
}
}, 500);
これでこの問題を解決しました。PS:request Focus()が無効になった理由
setVisible(true);
person.requestFocus();
つまりrequest Focusはset Visibleの後ろに置くべきです。以上は小编が绍介したAndroid开発中のrequestfocusの无効な原因と解决方法です。皆さんに助けてほしいです。もし何かご质问がありましたら、メッセージをください。小编はすぐに返事します。ここでも私たちのサイトを応援してくれてありがとうございます。