2016-02-04 79 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

实施onCreateOptionsMenu,而不是setOnQueryTextListener 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; 
    }