我有一个EditText字段。当我在上面设置onClick监听器时,需要先焦点在该字段上并且第二次点击才会调用监听器。因此实际上需要两次点击才能调用监听器。我该如何修复它,以便从第一次点击开始工作?我不想将 focusable 设置为 false,因为那样程序就无法正常工作。
我有一个EditText字段。当我在上面设置onClick监听器时,需要先焦点在该字段上并且第二次点击才会调用监听器。因此实际上需要两次点击才能调用监听器。我该如何修复它,以便从第一次点击开始工作?我不想将 focusable 设置为 false,因为那样程序就无法正常工作。
正如其他人所说,第一次触摸使视图获得焦点,第二次触摸则“单击”该视图。不要实现 OnClickListener
,而是实现OnFocusChangeListener
。例如:
EditText edittext = (EditText)findViewById(R.id.myedittext);
edittext.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus) {
//handle your situation here
}
}
});
当在安卓中点击EditText时,首先会改变它的焦点。OnFocusChangeListener只会在第一次起作用。
之后,onClickListener每次都会起作用。
因此,如果你想要实现一些EditText监听器的功能,最好实现setOnTouchListener。
每次它都会起作用。
if (firstTime) {
// Put code that you want executed once here
firstTime = false;
}
else {
firstTime = true; // Second time: reset the flag
}
放置
<requestFocus />
在你的XML中的EditText中尝试一下,可能对你有帮助。
<EditText
android:id="@+id/edtTxtEmail1"
android:layout_width="240dp"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:inputType="textEmailAddress"
android:hint="Email ID" >
<requestFocus />
</EditText>
处理情况
部分是否没有执行到? - Kevin Coppock