2017-01-09 10 views
0

私がやろうとしているアプリでは、残りのAPIを呼び出す検索を実装したいと思います。ツールバーのSearchViewがアクティビティによって実装されました

私はそれがうまく動作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> 

しかし、いくつかの理由で(確かにI 'm missing something')メソッドは、SearchBoxで何かをクリックして「書き込む」とトリガーされません。

私が紛失していることはありますか?私が見つけたすべての例は、私がずっと前にした私の記事と似ています。

+1

私はあなたがSearchViewに何を聞いているかを伝えなければならないと思っています。 'setOnQueryTextListener(this)' –

+0

確かに分かりませんが、searchViewで 'setOnQueryTextListener'を呼び出し、' SearchView.OnQueryTextListener() 'に匿名の内部クラスを使用してみました。 – user3820753

答えて

0

解決策を見つける...私にとってfacepalm!

@Markkeenのpointendは、私が聞いている人SearchViewに伝える欠けていたとして、それがこのやって一定になる:

@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がtriggedされています。

ありがとうございます!

関連する問題