Android 安卓系统中的onFocus功能不能正常工作?

Android 安卓系统中的onFocus功能不能正常工作?,android,android-edittext,onfocus,Android,Android Edittext,Onfocus,大家好,我是android的新手,我有3个编辑框,我根据编辑框设置了3个setOnFocusChangeListener,当我聚焦mobile no编辑框时,我得到的是sim no id,而不是mobile no id。onFocus函数被错误id调用。如果我有任何错误,请让我们知道,否则解决方案 源代码: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanc

大家好,我是android的新手,我有3个编辑框,我根据编辑框设置了3个setOnFocusChangeListener,当我聚焦mobile no编辑框时,我得到的是sim no id,而不是mobile no id。onFocus函数被错误id调用。如果我有任何错误,请让我们知道,否则解决方案

源代码:

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.content_temp);

    objMobileNo = (EditText) findViewById(R.id.mobile_no);
    objSimNo = (EditText) findViewById(R.id.sim_no);
    objImsiNo = (EditText) findViewById(R.id.imsi_no);

    View.OnFocusChangeListener a = new View.OnFocusChangeListener() {
        public void onFocusChange(View view, boolean hasFocus) {
            if (!hasFocus) {
                //this if condition is true when edittext lost focus...
                //check here for number is larger than 10 or not
                //  focusText = "MOBILE";

                // Log.d("BKS", "onFocusChange: " + focusText);
                Log.d("BKS", "onFocusChange: " + view.getId());
                Log.d("BKS", "onFocusChange: " + R.id.mobile_no);



            }

        }
    };

    objMobileNo.setOnFocusChangeListener(a);
    objSimNo.setOnFocusChangeListener(a);
    objImsiNo.setOnFocusChangeListener(a);
XML代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<EditText
    android:layout_marginTop="100dp"
    android:id="@+id/mobile_no"
    style="@style/Material_Action"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/hint_mob_no"
    android:inputType="number"
    android:maxLength="10" />

<EditText
    android:id="@+id/sim_no"
    style="@style/Material_Action"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/hint_sim_no"
    android:inputType="number"
    android:maxLength="20" />

<EditText
    android:id="@+id/imsi_no"
    style="@style/Material_Action"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/hint_imsi_no"
    android:inputType="number"
    android:maxLength="15" />

<EditText
    android:id="@+id/status"
    style="@style/Material_Action"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="text"
    android:visibility="gone" />

<EditText
    android:id="@+id/scanning_type"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="text"
    android:visibility="gone" />


<LinearLayout
    android:id="@+id/mLlayoutBottomButtons"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:orientation="horizontal">

    <Button
        android:id="@+id/verify"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/holo_green_light"
        android:text="Verify"
        android:textColor="@android:color/white">

    </Button>

</LinearLayout>

提前感谢,

Kalanidhi。

您正在为所有
EditText
设置相同的
OnFocusChangeListener
。因此,当您聚焦一个新的
EditText
时,当前文本将失去焦点。因此,对于这两个事件,将调用
onFocusChange()
。但是您的
if
条件只过滤失去焦点的视图,而不过滤获得焦点的视图

因此,替换

if (!hasFocus) {

}
用这个使它按预期工作

if (hasFocus) {

}

检查(hasFocus)是否移除!签名然后检查它返回当前焦点文本查看ID谢谢,工作正常..你救了我一天:)-