2015-09-21 12 views
9

私の現在のAndroidプロジェクトでは、Butterknifeライブラリを使用してビューをバインドし、アノテーションをonClickとしています。これは、すべてのも、断片的に素晴らしい作品が、今、私は解決策を見つけることができない時点でよ:バターナイフバインドメニューからの検索ビュー

私はActionBarとして新しいToolBarを使用して、それでSearchViewでメニューを膨らませます。このためSearchView私は@OnTextChanged注釈を使用したいが、メニュー項目ButterknifeActionViewでバインドメソッドを呼び出すと、すべてのビューを再び元に戻そうとします。もちろん、ActionViewにはRootLayoutの他のビューは見つかりません。

だから、私は、バインドメソッドに、このビューを渡すことができButterknifeで一つだけViewを追加する方法はありますか私は私のRootLayoutToolBarViewからすべてのビューを含むビューを得ることができますか?たとえば、アクティビティではメニューIDの場合でもfindViewByIdを呼び出すことができますが、私のフラグメントからgetView()を使用すると動作しません。これのための任意のアイデア?

+0

機能はこれを実現するために要求されましたが、それはジェイクウォートンによって拒否されました。問題[#41](https://github.com/JakeWharton/butterknife/issues/41)と[#416](https://github.com/JakeWharton/butterknife/issues/416)を参照してください**私はこれを視点に基づいたものだけを支援することに集中させたいと思っています** – Sufian

答えて

7

SearchViewはメニュー項目なので、これはできないと思います。メニュー宣言で使用しているIDは、アクティビティのビューではなく、というビュー内のこのビューを識別します。これは、おそらくButterknifeがバインドできない理由です。

私はあなたがしなければならないだろう怖い:

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.bookings_list_menu, menu); 
    SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView(); 

    searchView.setOnSearchClickListener(...); 
    searchView.setOnCloseListener(...); 
    searchView.setOnQueryTextListener(...); 

    super.onCreateOptionsMenu(menu, inflater); 
} 
関連する問題