ユーザーが検索用のテキストを入力している間、アプリの特定の機能を無効にしたいと考えています。私のActionBarの関連アイテムのxmlは
<item android:id="@+id/actionbar_search"
android:orderInCategory="1"
android:showAsAction="always|withText|collapseActionView"
android:actionViewClass="android.widget.SearchView"
android:icon="@drawable/earth_2508858_search_en"
android:inputType="textPostalAddress" />
そして、検索に対応するために現在持っている対応するコードは
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.action_menu, menu);
MenuItem DestinationTxt = menu.findItem(R.id.actionbar_search);
final SearchView mySearchView = (SearchView)DestinationTxt.getActionView();
mySearchView.setOnQueryTextListener(new OnQueryTextListener() {
@Override
public boolean onQueryTextChange(String newText) { return false; }
@Override
public boolean onQueryTextSubmit(String query) {
//Hide the Keyboard
imm.hideSoftInputFromWindow(mySearchView.getWindowToken(), 0);
// CODE TO DO THE SEARCH
return true;
}
});
}
SearchView のメソッドを参照しましたが、アクティブかどうかを示すものは何も表示されませんでした。また、テキストが SearchView に入力されていることを示すブール状態変数を入れることについても心配しています。無効な機能が無効のままになるように、状態変数が古くなります。だから私はこれを行うための堅牢な方法を探しています。すべての助けに感謝します:-)。
更新します。OnFocusChangeListener
以下の回答は、 mySearchView オブジェクトおよび/または mySearchView.isFocussed() メソッドによって実装されるインターフェースを使用することを提案しています。どちらも有望に聞こえましたが、私は今テストしましたが、どちらもうまくいかないようです。おそらく、彼らの失敗は、この SearchView が ActionBar にあるという事実と関係があるのでしょうか? いずれにせよ、私はまだ堅牢なソリューションを求めています。