我有一个扩展LinearLayout的类(一个视图)。

现在,我正在尝试为我的活动中该类的每个元素做一个上下文菜单,但是没有办法,它永远不会触发:

 public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    LinearLayout ll = new LinearLayout(this);
    MyLinearLayout[] arrayLayout = new MyLinearLayout[num];
    for (int i = 0; i < arrayLayout.length; i++)
    {
       //I ve removed code that fill the array and do some actions


       //and then:
       ll.addView(arrayLayout[i]);
       registerForContextMenu(arrayLayout[i]);
    }
    setContentView(ll);
}

@Override
 public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    Log.i(LOGTAG, "context menu");
        menu.setHeaderTitle("Context Menu");
        menu.add(0, v.getId(), 0, R.string.CTX_EDIT);
        menu.add(0, v.getId(), 0, R.string.CTX_ELIM);
    }
@Override
public boolean onContextItemSelected(MenuItem item) {
    function1(item.getItemId());

return true;
}

public void function1(int id){
    Toast.makeText(this, "function 1 called", Toast.LENGTH_SHORT).show();
}


上下文菜单从不显示,我已经阅读了很多有关它的问题,我认为这是由于LinearLayout扩展类引起的,但是我敢肯定有一种方法可以执行此操作,否则我会丢失一些东西。有人可以帮忙吗?谢谢!

最佳答案

您正在创建MyLinearLayout的空数组:arrayLayout = new MyLinearLayout[num]

然后,您尝试使用以下命令设置上下文菜单:

registerForContextMenu(arrayLayout[i])


由于arrayLayout[i]null,所以什么也不做。

关于android - 扩展LinearLayout View 上的上下文菜单,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7262464/

10-15 05:46