2017-01-09 53 views
0

在我试图做的应用程序中,我想要实现搜索,这将调用休息api。由活动执行的工具栏中的SearchView

当我问很久以前就如何做一个搜索查看它工作正常 - >How to use SearchView in Toolbar Android

但现在我想尝试一些“不同”(要了解多一点点)。但我做错了什么。

我试图做的是使活动implmement SearchView.OnQueryTextListener,所以whay我是:

public class PMov extends AppCompatActivity implements SearchView.OnQueryTextListener {  
    .... 
    @Override 
     public boolean onCreateOptionsMenu(Menu menu) { 
      getMenuInflater().inflate(R.menu.menu_main, menu); 
    } 

    @Override 
    public boolean onQueryTextSubmit(String query) { 
     Toast.makeText(this, "TextSubmit", Toast.LENGTH_SHORT).show(); 
     Logger.d("onQueryTextSubmit: " + query); 
     return false; 
    } 

    @Override 
    public boolean onQueryTextChange(String newText) { 
     Toast.makeText(this, "TextChange", Toast.LENGTH_SHORT).show(); 
     Logger.d("onQueryTextChange: " + newText); 
     return false; 
    } 
} 

和XML:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <item android:id="@+id/action_search" 
     android:title="@string/action_search" 
     app:actionViewClass="android.support.v7.widget.SearchView" 
     app:showAsAction="always" 
     android:icon="@android:drawable/ic_menu_search"/> 
</menu> 

但由于某些原因(我肯定当我点击并在“搜索框”中写入某些内容时,方法不会被触发。

我失踪了什么?我发现的所有例子都与我很久以前发布的帖子类似。

+1

我猜你必须告诉SearchView什么是听I.e. 'setOnQueryTextListener(this)' –

+0

不确定,但是您是否尝试过在searchView上调用'setOnQueryTextListener'并将匿名内部类用于'SearchView.OnQueryTextListener()'而不是在活动中实现,这对我很有用。 – user3820753

回答

0

寻找解决方案... facepalm对我来说!

为@Markkeen pointend,我缺少告诉搜索查看谁在听,变成了定这样做:

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     MenuItem searchItem = menu.findItem(R.id.action_search); 
     SearchView actionSearchView = (SearchView) searchItem.getActionView(); 
     actionSearchView.setOnQueryTextListener(this); 
    } 

而与此,方法onQueryTextSubmitonQueryTextChange被触发。

谢谢!