I have a SearchView
in my ActionBar that is inflated from XML
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/action_menu_search"
android:showAsAction="always|collapseActionView"
android:icon="@drawable/action_bar_search_icon"
android:actionViewClass="android.widget.SearchView"/>
</menu>
I inflate it in my Fragment this way:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.search, menu);
final MenuItem item = menu.findItem(R.id.action_menu_search);
searchView = (SearchView) item.getActionView();
searchView.setOnQueryTextListener(this);
}
And my test:
onView(withId(R.id.catalog_filter_indicator_header_text)).perform(click());
//enter text and wait for suggestions
onView(withId(R.id.action_menu_search)).perform(click());
onViewisAssignableFrom(AutoCompleteTextView.class)).perform(click(), typeText("test"));
It looks like that field looses focus when it starts typing. And I don't know why.
All views are found and typeText
statement passes without a hitch, but text does not appear in the field. I also tried that with simple EditText
and custom android:actionLayout
but with the same results.
Is there something I'm missing?
Finally, I decided to create my own custom action because I wasn't be able to typeText work. Here you are my code:
This code is useful to write code in all children from TextView. F. ex, EditText.
I took this code from https://stackoverflow.com/a/32850190/1360815
This code works for the
SerachView
in myActionBar
, as theSearchView
is the onlyEditText
in myFragment
:KeyEvent.KEYCODE_ENTER
is the code for pressing the submit button.Accepted answer is good but it is not necessary anymore since the official Espresso library included the same functionality with
replaceText
function.You can use it like below without a custom implementation
Search view has default id. You can get it in Espresso in this way.
Hope this was useful.
The id of the EditText in SearchView is
search_src_text