2016-02-04 2 views
0

Я пытаюсь поместить кнопку поиска на панель действий. И у меня есть список на экране, при поиске любой текстовый список будет обновляться и отображать эти текстовые данные на одном экране.андроид Меню поиска поиска

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main, menu); 
    final MenuItem item = menu.findItem(R.id.search); 
    return true; 
} 

Кнопка поиска по нажатию и кнопка поиска мягкой клавиатуры показывают поиск.

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 

     case R.id.search: 
      // startSearchActivity(); 
      MenuItemCompat.expandActionView(item); 
      SearchView searchView = (SearchView) MenuItemCompat.getActionView(item); 

      searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 

       @Override 
       public boolean onQueryTextSubmit(String text) { 
        Toast.makeText(getApplicationContext(), "dddddd " + text, Toast.LENGTH_LONG).show(); 
        return true; 
       } 

       @Override 
       public boolean onQueryTextChange(String text) { 
        Toast.makeText(getApplicationContext(), "sssssss " + text, Toast.LENGTH_LONG).show(); 
        return true; 
       } 
      }); 
      break; 

     default: 
      break; 
    } 
    return super.onOptionsItemSelected(item); 
} 

но кнопка поиска софт-клавиатуры не показывает никаких действий. Скажите, пожалуйста, что случилось ..

ответ

0

реализовать setOnQueryTextListener в onCreateOptionsMenu вместо onOptionsItemSelected

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     MenuItem searchItem = menu.findItem(R.id.search); 
     MenuItemCompat.expandActionView(searchItem); 

     SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem); 

     searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 

      @Override 
      public boolean onQueryTextSubmit(String text) { 
       Toast.makeText(getApplicationContext(), "dddddd " + text, Toast.LENGTH_LONG).show(); 
       return true; 
      } 

      @Override 
      public boolean onQueryTextChange(String text) { 
       Toast.makeText(getApplicationContext(), "sssssss " + text, Toast.LENGTH_LONG).show(); 
       return true; 
      } 
     }); 
     return true; 
    } 
Смежные вопросы