I'm trying to implement searchview on my fragment toolbar. For me other menu item is working properly but using searchview id is not either clicked or listeners invoked to perform searching. I'm showing few lines below.
crop_searchview_menu :
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/crop_search_menu"
android:icon="@drawable/ic_search_icon"
android:title="@string/search_crop_title"
app:actionViewClass="androidx.appcompat.widget.SearchView"
app:showAsAction="always" />
<item
android:id="@+id/searchview_addcrop_menu"
android:title="@string/add_crop_btn"
app:showAsAction="ifRoom"
/>
</menu>
Here in above code the second id="searchview_addcrop_menu" is working properly on performing onitemclick. I have added this menu on my MaterialToolbar which is under AppBarLayout as below.
cropMainToolbar :
<com.google.android.material.appbar.MaterialToolbar
app:menu="@menu/crop_searchview_menu"
app:layout_scrollFlags="scroll|enterAlwaysCollapsed"
android:id="@+id/cropMainToolbar"
app:title="@string/crops_home_heading"
android:layout_width="match_parent"
android:layout_height="wrap_content">
I have applied onMenuItemClickListener on my toolbar because onCreateOptionsMenu() is not working for me inside fragment by any methods shown here which shows problem as my inflated menu is never shown on my toolbar.
I skipped that and tried to below in java code.
OnMenuItemClickListener code:
cropMainToolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
if(item.getItemId()== R.id.crop_search_menu){ //not working
SearchView searchView= (SearchView) cropsMenu.findItem(R.id.crop_search_menu).getActionView();
searchView.setQueryHint(getResources().getString(R.string.search_crop_hint));
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
System.out.println("Typed "+newText); //not working
return false;
}
});
}if(item.getItemId()==R.id.searchview_addcrop_menu){ //works
Intent intent = new Intent(context, AddChangeCropActivity.class);
cropChangesLaucher.launch(intent);
}
return true;
}
});
Please help me to perform searchview execution. I'm using Android Studio 2021.1.1 gradle 7.0