我应该在 AlertDialog.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();
}
});
}

你遵循此代码。

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

最新更新