У меня есть AutoCompleteTextView во фрагменте (android.support.v4.app). После того, как пользователь выберет элемент в раскрывающемся списке, я хочу сохранить введенный им текст. Вот что у меня есть.
Сначала определение класса:
public class MyFragment extends Fragment
implements
AutoCompleteTextView.OnDismissListener,
AutoCompleteTextView.OnKeyListener,
AutoCompleteTextView.OnEditorActionListener {
В onViewCreated() у меня есть следующие назначения:
myAutoComplete.setOnDismissListener(MyFragment.this);
myAutoComplete.setOnKeyListener( MyFragment.this );
myAutoComplete.setOnEditorActionListener(MyFragment.this);
И я добавил эти методы:
@Override
public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) {
Log.i("************(arg0) ", arg0.toString());
Log.i("************(arg1) ", arg0.toString());
Log.i("***********(keyevent) ", arg2.toString());
return false;
}
@Override
public boolean onKey(View arg0, int arg1, KeyEvent arg2) {
Log.i("************(arg0) ", arg0.toString());
Log.i("************(arg1) ", arg0.toString());
Log.i("***********(keyevent) ", arg2.toString());
return false;
}
@Override
public void onDismiss() {
// Fires when the dropdownlist is dismissed.
// The event is assigned in onViewCreated
}
Моя первая надежда заключалась в том, что событие onDismiss() сработает до того, как введенный пользователем текст будет заменен выбранным элементом. Событие, как показано, срабатывает правильно, но после того, как текст пользователя был заменен выбранным элементом.
Затем я подключил два разных прослушивателя ключей, надеясь захватить и сохранить значение во время его ввода. Эти не стреляют. Изучив эту проблему, я узнал, что прослушиватели клавиш предназначены только для работы с физическими клавиатурами. Хотя некоторые люди, кажется, заставили его работать с программными kybd, широкая совместимость, похоже, является проблемой.
Так что я застрял, и у меня не осталось волос. У кого-нибудь есть предложения?