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

问题描述:

我正在构建一个自定义组件,我希望在上面有上下文菜单。到目前为止,我已经成功地创建并显示上下文菜单执行以下操作:自定义组件中的上下文菜单

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成员。我不确定这是否可以这样做。有什么建议么?

寻找其他选项之后好吧,我发现了一个很simpel解决方案:

@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这个工作