我正在构建一个自定义组件,我想要一个上下文菜单。到目前为止,我已成功创建并显示上下文菜单,执行以下操作:
public class CustomComponent extends LinearLayout implements OnClickListener, OnCreateContextMenuListener {
private final MenuInflater menuInflator;
public CustomComponent(final Context context) {
this(context, null);
}
public CustomComponent(final Context context, final AttributeSet attrs) {
super(context, attrs);
menuInflator = new MenuInflater(context);
final LayoutInflater inf = LayoutInflater.from(context);
inf.inflate(R.layout.component, this, true);
setOnClickListener(this);
setOnCreateContextMenuListener(this);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
menuInflator.inflate(R.menu.menu_context, menu);
}
@Override
public void onClick(View v) {
showContextMenu();
}
}
我现在面临的问题是我不知道如何在这个组件中调用onContextItemSelected()函数。我正在查看Activity中的一些源代码,并注意到它有一个mWindow成员来保存这些回调。我不确定这种方式是否可行。有什么建议吗?
答案 0 :(得分:1)
在寻找其他选择之后,我找到了一个非常简单的解决方案:
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
menuInflator.inflate(R.menu.menu_context, menu);
menu.getItem(0).setOnMenuItemClickListener(this);
}
@Override
public boolean onMenuItemClick(MenuItem item) {
// Do something
return false;
}
ofcouse你需要实现OnMenuItemClickListener才能使其正常工作