2015-04-29 1 views
0

Я реализовал поиск по ключевым словам в своем приложении, но я не получаю никаких обратных вызовов, когда я нажимаю клавишу поиска (то есть вопросительный знак) на мягкой клавиатуре. Я добавил TextWatcher в свой EditText, но он не вызывается, когда я нажимаю поиск. Activity.onKeyUp() также не вызывается.Как узнать, когда пользователь нажал клавишу поиска?

Есть ли способ узнать, когда пользователь нажимает клавишу поиска на мягкой клавиатуре?

Заранее спасибо ...

ответ

1

использование SearchView как этот

SearchView sv=(SearchView)findViewByid(R.id.sv); 
     sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
       @Override 
       public boolean onQueryTextSubmit(String s) { 
        return false; 
        //here is when clicking the search button in keyboard 
       } 

       @Override 
       public boolean onQueryTextChange(String s) { 
        //here is when the text change 
        return false; 
       } 
      }); 

Edit я нашел прочь сделать это:

в XML

<EditText 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/editText" 
    android:imeOptions="actionSearch" 
    android:inputType="text"/> 

в методе onCreate

((EditText)findViewById(R.id.editText)).setOnEditorActionListener(new TextView.OnEditorActionListener() { 
     @Override 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
      if (actionId == EditorInfo.IME_ACTION_SEARCH) { 
       Toast.makeText(MainActivity.this,"searching",Toast.LENGTH_LONG).show(); 
       return true; 
      } 
      return false; 
     } 
    }); 

, что все

+0

Я не использую SearchView. Я использую собственный клиент EditText в панели действий. Есть ли другой способ? –

+0

Большое спасибо за обновление. Он вызывает onEditorAction(), но я не могу закрыть клавиатуру. Может быть невозможно закрыть клавиатуру в ответ на нажатие клавиши, поскольку она думает, что пользователь все еще печатает. : -/ –

+0

Почему кнопка «Назад» не работает? –