Всплывающее меню с использованием ImageButton

#android

#Android

Вопрос:

В моем проекте у меня есть макет, надутый в адаптере. и у меня есть ImageButton, настроенный для отображения всплывающего меню, все меню добавляются программно. Но когда я запускаю проект и нажимаю кнопку, приложение завершает работу со следующей ошибкой;

android.просмотр.Исключение InflateException: строка двоичного XML-файла # 32 в com.example.ghanlice:layout/abc_popup_menu_item_layout: не удалось разрешить атрибут в индексе 1: TypedValue{t =0x2 / d = 0x7f040158 a = -1}, вызванный: java.lang.Исключение UnsupportedOperationException: не удалось разрешить атрибут в индексе 1: TypedValue{t =0x2 / d = 0x7f040158 a =-1}

Сумасшедшая часть в том, что у меня такое же всплывающее окно на другом адаптере работает отлично. Я просто не могу понять, почему это не работает.

макет XML-файла

 <ImageButton
    android:id="@ id/achieve_more"
    android:layout_width="wrap_content"
    android:background="@null"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_more"
    />
  

java-файл адаптера

  PopupMenu popupMenu = new PopupMenu(context, achieveMore, Gravity.END);

        if (uid.equals(myUid))
        {
            //add items to menu
            popupMenu.getMenu().add(Menu.NONE, 0,0, "Delete post");
            popupMenu.getMenu().add(Menu.NONE, 1,0, "Edit post");
        }
        popupMenu.getMenu().add(Menu.NONE, 2,0,"View details");

        popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                int id = item.getItemId();
                if (id == 0)
                {
                    //delete is clicked
                    deleteWithImage(pid, image);
                }
                else if (id == 1)
                {
                    //Edit is clicked
                    Intent intent = new Intent(context, AddAchievement.class);
                    intent.putExtra("key", "editPost");
                    intent.putExtra("editPostId", pid);
                    intent.putExtra("editType", type);
                    context.startActivity(intent);
                }

                else  if (id == 2)
                {
                    Intent intent = new Intent(context, AchievementDetails.class);
                    intent.putExtra("postId", pid);
                    //intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    context.startActivity(intent);
                }
                return false;

            }
        });
        popupMenu.show();
  

Ответ №1:

После двух дней без какого-либо решения я, наконец, решил проблему! что я сделал, так это удалил
импорт androidx.appcompat.widget.PopupMenu; а затем добавьте импорт android.widget.PopupMenu;

дело закрыто!!