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