Skip to content Skip to sidebar Skip to footer

Searchview Imeoptions And Onquerytextsubmit Support

I'm currently using ActionBarSherlock 4.2 and it's SearchView widget in my app. I wanted to make it submit query even though it's empty. I tried to set imeOptions and OnKeyListener

Solution 1:

I switched to put SearchView via ActionMode instead. I'll accept this as an answer for now until someone has a better solution for this question.

privatevoidshowActionMode(){
    MainActivity a = (MainActivity)getActivity();
    a.startActionMode(newSearchActionMode());
}

privateclassSearchActionModeimplementsActionMode.Callback{

    @OverridepublicbooleanonCreateActionMode(ActionMode mode, Menu menu) {
        Log.d(TAG, "onCreateActionMode creating inflater");
        MenuInflater inflater = newMenuInflater(getActivity());
        Log.d(TAG, "onCreateActionMode inflating");
        inflater.inflate(R.menu.interactive_map, menu);
        Log.d(TAG, "onCreateActionMode finding SearchView");
        mSearchView = (SearchView) menu.findItem(R.id.action_search).getActionView();

        Log.d(TAG, "mSearchView: " + mSearchView);
        setupSearchView();
        returntrue;
    }

    @OverridepublicbooleanonPrepareActionMode(ActionMode mode, Menu menu) {
        Log.d(TAG, "onPrepareActionMode");
        //TODO add searchView once working
        mSearchView.requestFocus(); 
        returnfalse;
    }

    @OverridepublicbooleanonActionItemClicked(ActionMode mode, MenuItem item) {
        Log.d(TAG, "onActionItemClicked");
        returnfalse;
    }

    @OverridepublicvoidonDestroyActionMode(ActionMode mode) {
        Log.d(TAG, "onDestroyActionMode");
        closeTopTray();
        closeListView();
    }

}


privatevoidsetupSearchView() {

    mSearchView.setIconifiedByDefault(false);
    mSearchView.setId(ID_SEARCH_VIEW);
    mSearchView.setOnSearchClickListener(this);
    mSearchView.setOnQueryTextListener(this);
    mSearchView.setOnCloseListener(this);
    mSearchView.setImeOptions(EditorInfo.IME_ACTION_SEARCH);

    // To automatically display keyboard when display SearchView
    mSearchView.setOnQueryTextFocusChangeListener(newView.OnFocusChangeListener() {

        @OverridepublicvoidonFocusChange(View v, boolean hasFocus) {
            Log.d(TAG, "mSearchView focus changed: " + hasFocus);
            if (hasFocus) {
                showInputMethod(v.findFocus());
            }
        }
    });

    mSearchView.setQueryHint("Type keyword");
    mSearchView.setQuery((TextUtils.isEmpty(searchQuery)? "": searchQuery), false);
}

Solution 2:

I had the same problem, the problem lies onSubmitQuery() in SearchView.java

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

Empty query's are not supported so I had to download and use ActionBarSherlock and then modify this method.

This is how my onSubmitQuery() looks like now

privatevoidonSubmitQuery() {
     CharSequence query = mQueryTextView.getText();
     if (query == null) {query = "";}
     if (mOnQueryChangeListener == null
             || !mOnQueryChangeListener.onQueryTextSubmit(query.toString())) {
         if (mSearchable != null) {
             launchQuerySearch(KeyEvent.KEYCODE_UNKNOWN, null, query.toString());
             setImeVisibility(false);
         }
         dismissSuggestions();
     }
 }

Hope this helps.

Post a Comment for "Searchview Imeoptions And Onquerytextsubmit Support"