Какой контекст я должен установить в конструкторе AlertDialog.Builder? - PullRequest
0 голосов
/ 23 января 2020

Что код, который я пытаюсь сделать, но возникает ошибка, ошибка, указанная в Builder, не может быть применена к (анонимно android.widget.Popupmenu.OnMenuItemClickListener)

@Override
public void onBindViewHolder(@NonNull HalakaViewHolder holder, int position) {
    holder.bind(halakat.get(position));
    holder.imgbtn_more.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            PopupMenu popup = new PopupMenu(view.getContext(), view);
            popup.getMenuInflater().inflate(R.menu.halaka_more_menu, popup.getMenu());
            popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem menuItem) {
                    int id = menuItem.getItemId();
                    switch (id){
                        case R.id.menu_more_halaka_tadel:
                            final AlertDialog.Builder alert=new AlertDialog.Builder(this);
                            break;
                        case R.id.menu_more_halaka_delete:
                            break;
                    }
                    return true;
                }
            });
            popup.show();
        }
    });
}

Ответы [ 2 ]

0 голосов
/ 23 января 2020

Вы должны создать глобальный объект Context.

private Context context;

Затем установить значение переменной контекста.

@Override
public HalakaViewHolder.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  context = parent.getContext();
  View view = LayoutInflater.from(context).inflate(R.layout.your_layout_name, parent, false);
  return new HalakaViewHolder.ViewHolder(view);
}

Наконец, использовать его.

@Override
public void onBindViewHolder(@NonNull HalakaViewHolder holder, int position) {
    holder.bind(halakat.get(position));
    holder.imgbtn_more.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            PopupMenu popup = new PopupMenu(context, view);
            popup.getMenuInflater().inflate(R.menu.halaka_more_menu, popup.getMenu());
            popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem menuItem) {
                    int id = menuItem.getItemId();
                    switch (id){
                        case R.id.menu_more_halaka_tadel:
                            final AlertDialog.Builder alert=new AlertDialog.Builder(this);
                            break;
                        case R.id.menu_more_halaka_delete:
                            break;
                    }
                    return true;
                }
            });
            popup.show();
        }
    });
}
0 голосов
/ 23 января 2020

Вы следуете этому коду.

holder.itemView.getContext()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...