Reputation: 123
I am trying to add a search function and want to inflate an ActionBar that has a menu item inside a fragment.
Since onCreateOptionsMenu is deprecated, what do I use as replacement, or is that function still usable? Thanks!
Upvotes: 1
Views: 619
Reputation: 3062
Use this code,
val menuHost = activity!! as MenuHost
menuHost.addMenuProvider(object : MenuProvider {
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
menuInflater.inflate(R.menu.menu_delete, menu)
}
override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
when (menuItem.itemId) {
R.id.menu_item_delete -> deleteAll()
}
return true
}
}, viewLifecycleOwner, Lifecycle.State.RESUMED)
MenuHost menuHost = getActivity();
menuHost.addMenuProvider(new MenuProvider() {
Override
public void onCreateMenu(@NonNull Menu menu, @NonNull MenuInflater menuInflater) {
menuInflater.inflate(R.menu.menu_delete, menu);
}
@Override
public boolean onMenuItemSelected(@NonNull MenuItem menuItem) {
if (menuItem.getItemId() == R.id.menu_item_delete) {
deleteAll();
}
return true;
}
}, getViewLifecycleOwner(), Lifecycle.State.RESUMED);
onCreateOptionsMenu is deprecated
Yes, it has been deprecated (can also works as well) but Android team has introduced a new way to implement onCreateMenu
& onOptionsMenuItem
as above.
Note: Add this dependency, if not added in gradle.
implementation "androidx.activity:activity-ktx:1.6.1"
Upvotes: 3