我应该在 AlertDialog.Builder 构造函数中设置什么上下文?

What the context should i set in AlertDialog.Builder constructor?

我尝试执行的代码出现错误, 构建器中所说的错误无法应用于(匿名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();
        }
    });
}

您遵循此代码。

holder.itemView.getContext()

您应该创建全局上下文对象。

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();
        }
    });
}