jho
jho

Reputation: 293

How to get ActionMode.Menu working properly in OnActionModeStarted on Android Xamarin Forms?

I have the following code to introduce menu items into the system context menu upon text selection on a Label.

public override void OnActionModeStarted(ActionMode mode)
{
    IMenu menu = mode.Menu;
    
    menu.Add("MItem1");
    menu.Add("MItem2");
    menu.Add("MItem3");
    
    menu.GetItem(0).SetOnMenuItemClickListener(new MenuItemOnMenuItemClickListener(this, 0));
    menu.GetItem(1).SetOnMenuItemClickListener(new MenuItemOnMenuItemClickListener(this, 1));
    menu.GetItem(2).SetOnMenuItemClickListener(new MenuItemOnMenuItemClickListener(this, 2));

    //test code -> this works fine
    menu.Add(0, 999, 0, "test");
    //item is found, item.IsEnabled == true, item.IsVisible == true
    IMenuItem item = menu.FindItem(999); 


    base.OnActionModeStarted(mode);
}

It works fine on a Lenovo device and was previously working on a Samsung device, but over time due to, I suspect, one or two Samsung system updates, the method no longer has any effect.

I've run the code through the debugger and the code can be stepped through line by line, but the system menu is completed unaffected by the added menuitems and continues as if my code hasn't been called at all.

Any ideas?

Upvotes: 1

Views: 127

Answers (1)

jho
jho

Reputation: 293

I have both a workaround and a solution.

Workaround

I added:

mode.Hide(1);

to the above code. It helps refresh the menu and the correct menu items appear.

Solution

I did another Samsung OS upgrade and the problem has disappeared. Seems like it was an OS problem after all.

Upvotes: 1

Related Questions