У меня есть поле EditText. Когда я устанавливаю onClickListener на нем, сначала потребуется фокус на поле, а затем щелчок, чтобы вызвать слушателя. Таким образом, на самом деле это два клика для вызова слушателя. Как я могу исправить это для работы с первого щелчка? Я не хочу устанавливать focusable в false, потому что тогда программа не будет работать.Android EditText setOnClickListener
ответ
Как уже говорилось, первое прикосновение фокусирует взгляд, второе касание «щелкает» это. Вместо того, чтобы внедрять 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
}
}
});
Я не совсем понимаю, что вы подразумеваете под тем, что есть два клика, чтобы вызвать слушателя. Но если метод OnClick вызывается дважды, и вы просто хотите, чтобы код запускался один раз, вы могли бы создать флаг в качестве переменной-члена, который отслеживает, был ли код уже запущен. Например, после инициализации firstTime
в true
, есть что-то вроде этого в вашем методе onClick
:
if (firstTime) {
// Put code that you want executed once here
firstTime = false;
}
else {
firstTime = true; // Second time: reset the flag
}
Нет, это не проблема. Я должен дважды щелкнуть поле, прежде чем он что-нибудь сделает. – MikkoP
поставил
<requestFocus />
в вашем EditText в XML. попробовать, может быть полезным для вас
<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>
В противном случае да, но у меня есть несколько входов, которым все это нужно. – MikkoP
Когда EditText затрагивается в android, сначала изменяется фокус. OnFocusChangeListener работает в первый раз.
После этого onClickListener работает каждый раз.
Итак, если вы хотите сделать что-то на EditText слушателя, то лучше реализовать setOnTouchListener
Каждый раз, когда он будет работать.
- 1. [Android] Handler setOnClickListener event в EditText
- 2. Android: SetOnclickListener для EditText, который является android: focusable = "false"
- 3. Android setOnClickListener (это) Ошибка
- 4. Android Cant разрешить ошибку setOnClickListener
- 5. Android: начало намерения в setOnClickListener
- 6. setOnClickListener вызывает силу в Android
- 7. Android: Listview SetOnClickListener вызывает NullPointerException
- 8. NullPointerException с setOnClickListener (android)
- 9. Android setonclicklistener разбился
- 10. Android - изображение и setOnClickListener
- 11. Android - Spinner + setOnClickListener
- 12. Android setOnClickListener не работает
- 13. Android setOnClickListener errors
- 14. Android setOnclicklistener параметр
- 15. Android Wear setOnClickListener crash
- 16. ошибки переопределения android setonclicklistener
- 17. Android setOnClickListener не работают
- 18. android setOnClickListener не работает
- 19. Android ImageButton setOnClickListener NullPointerException
- 20. NullPointerException: SetOnClickListener (это) - Android
- 21. Android- Логика позади setOnClickListener
- 22. Android setonclicklistener за исключением указателя нулевой
- 23. NPE на моем Android-приложении для setOnClickListener
- 24. Исключение Nullpointer на setOnclickListener в коде Android
- 25. ошибка setOnClickListener Null объект
- 26. динамическая кнопка Android с setOnClickListener
- 27. Обработка событий в Android (setOnClickListener)
- 28. Android setOnClickListener() на HorizontalScrollView Просмотров
- 29. Ошибка на setOnClickListener Android Studio
- 30. Android setOnClickListener с 2 функциями
Не повезло. :/ – MikkoP
Можете ли вы уточнить? Вы отлаживали? Доходит ли она до части слушателя фокуса? Если да, то не доходит ли он до раздела «порядок обработки» кода при первом щелчке? – kcoppock
Теперь он работает. У вас есть ошибка в коде. onFocus должен быть onFocusChange. Спасибо :) – MikkoP