Android 12 | Пользовательский пункт меню не отображается при выделении веб-просмотра.

#android #android-studio

Вопрос:

   @Override
public void onActionModeStarted(ActionMode mode) {


    super.onActionModeStarted(mode);
    if (AppUtil.isChromebookEnvironment() || bookInfoData.getContentImageType().trim().equalsIgnoreCase("ImageBased")) {
        mode.finish();
    }
    TenantReaderManager multiTenancyReaderManager = TenantReaderManager.getInstance();

    selectionModeBar = mode;

    if (pager.isPagingEnabled() == false) {
        return;
    }

    


    // Customize the actionbar
    Menu menu = selectionModeBar.getMenu();
    menu.clear();


    Resources res = getResources();

    try {
        Log.e("name", String.valueOf(menu.getItem(0).getTitle()));
    } catch (Exception e) {
        e.printStackTrace();
    }


    menu.add(0, ReaderConstants.KEY_HIGHLIGHT, 0, " "   res.getString(R.string.native_reader_activity_popup_highlight)).setOnMenuItemClickListener(onMenuItemclick)
            .setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
    menu.add(0, ReaderConstants.KEY_NOTES, 0, " "   res.getString(R.string.native_reader_activity_popup_note)).setOnMenuItemClickListener(onMenuItemclick)
            .setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

    try {
        Log.e("name", String.valueOf(menu.getItem(0).getTitle()));
    } catch (Exception e) {
        e.printStackTrace();
    }
 

}

  1. Отображается меню по умолчанию, пользовательские элементы(например, копировать, поделиться, выбрать все) не отображаются. Но заголовок печатается после добавления его в меню, при условии, что menu.clear() работает нормально, так как у меня есть инструкция журнала после menu.clear()

Этот код работает в Android 11 и ниже.

введите описание изображения здесь

Комментарии:

1. После 2 дней исследований и разработок я получил решение, нам нужно аннулировать элемент режима действия после добавления в него пользовательского элемента. Аннулируйте содержимое, связанное с этим режимом действия. Это имеет смысл только для режимов действия, которые поддерживают динамическое позиционирование на экране, и обеспечивает более эффективный способ его изменения без аннулирования всего режима действия.

2. большое вам спасибо за ваш ответ. Я был в той же лодке. 2 дня ничего, пока я не увижу ваш комментарий. Именно то, что было нужно!