自定义组件中的上下文菜单

时间:2011-04-19 12:22:47

标签: android contextmenu

我正在构建一个自定义组件,我想要一个上下文菜单。到目前为止,我已成功创建并显示上下文菜单,执行以下操作:

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成员来保存这些回调。我不确定这种方式是否可行。有什么建议吗?

1 个答案:

答案 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才能使其正常工作