29

Android 4.1.2を使用しています。にSearchViewウィジェットがありActionBarます。SearchView.OnQueryTextListenerAndroid 開発者サイトのドキュメントにonQueryTextSubmitは、ユーザーがクエリを送信すると起動/呼び出されると記載されています。これは、キーボードのキーが押されたか、送信ボタンが押されたことが原因である可能性があります。」

検索クエリが空の場合、これは発生しません。ListView の検索フィルターをクリアするために空のクエリを起動するには、これが必要です。これはバグですか、それとも何か間違っていますか?

4

14 に答える 14

15

これはバグではありません。ソース コードは意図的に null 値と空の値をチェックします。

private void onSubmitQuery() {
    CharSequence query = mQueryTextView.getText();
    if (query != null && TextUtils.getTrimmedLength(query) > 0) {

ただし、ユーザーが検索 EditText をクリアしたときに、OnQueryTextChange コールバックを使用して ListView のフィルター可能要素をクリアできるはずです。

于 2012-11-27T04:08:45.080 に答える
14

私はより簡単な回避策を持っています: onQueryTextChange を使用しますが、空の場合にのみレンダリングします。

searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                    renderList(true);
                    return false;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                    if (searchView.getQuery().length() == 0) {
                            renderList(true);
                    }
                    return false;
            }
    });
于 2015-11-20T03:05:13.017 に答える
3

他の人が言及しているように、この動作は意図的なものです。の解決策をあきらめ、SearchViewを使用してハンドルを取得できる をOnQueryChangeListener実装することで回避することにしました。SearchView を使用している限り、キーボードの検索ボタンのクリックを処理できます。詳細については、この SO の回答を参照してください。OnEditorActionListenerEditTextR.id.search_src_textsetImeOptionsEditorInfo.IME_ACTION_SEARCH

于 2014-07-02T20:40:20.600 に答える
0

この動作は上書きできません。回避策は、ユーザーが検索ビューを終了するときにフィルターをクリアすることです。

これにはOnCloseListenerを使用できます。ただし、開発している最小 API レベルによっては、これも問題を引き起こす可能性があります。

于 2013-02-01T14:31:51.913 に答える