В моем приложении я использую панель действий с пользовательским SearchView. Я хочу использовать какой-то пользовательский код, когда пользователь нажимает кнопку ввода в поле поиска. Но я не могу найти способ поймать момент, когда пользователь нажимает кнопку ввода в SearchView.
Теперь я попробовал несколько способов захвата действия поиска, но я не могу найти его.
Моя кнопка определяется следующим образом:
<item
android:id="@+id/action_bar_search"
android:title="Search"
android:icon="@drawable/ic_menu_search"
android:showAsAction="always"
android:actionViewClass="-package-.CustomSearchView"
/>
При этом принадлежит класс CustomSearchView:
public class CustomSearchView extends SearchView implements OnClickListener, android.view.View.OnKeyListener{
public CustomSearchView(Context context) {
super(context);
this.setOnSearchClickListener(this);
this.setSubmitButtonEnabled(true);
this.setOnClickListener(this);
this.setOnKeyListener(this);
}
@Override
public void onClick(View v) {
Log.d("SEARCH", "Onclick! " + this.getQuery());
}
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
Log.d("SEARCH", "Search onkey");
return false;
}
}
Здесь вы можете увидеть, что я пробовал 2 подхода:
- Поймайте событие onclick из кнопки отправки. Это не сработало поскольку он был запущен только тогда, когда я нажал на значок поиска, чтобы открыть SearchView.
- Поймать нажатия клавиш в SearchView. Это не сработало или. Не получил ответа от какой-либо клавиши, которую я нажал.
У кого-нибудь есть способ сделать обычное действие поиска с помощью этого SearchView?
UPDATE:
Как указано ниже PJL: вам не нужен специальный диалог для переопределения этого поведения. Обычный виджет SearchView отлично подходит для этого.