menuitem.getmenuinfo()为动态创建的视图返回null

时间:2014-05-29 15:56:15

标签: java android

我有ScrollView嵌入式RelativeLayout嵌入式LinearLayout

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"
        android:paddingLeft="16dp" android:paddingRight="16dp" android:id="@+id/relativeLayout">

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" android:layout_below="@+id/Today"
            android:layout_alignParentLeft="true" android:id="@+id/linearLayoutToday"
            android:animateLayoutChanges="true">
        </LinearLayout>

    </RelativeLayout>

</ScrollView>

我想为CheckBox个对象添加一个上下文菜单,这些对象是动态添加的,如下所示。

private void addItem() {
    CheckBox ch = new CheckBox(this);
    ch.setText("Test");
    registerForContextMenu(ch);
    linearLayoutToday.addView(ch);
}

问题出现在onContextItemSelected方法中,因为item.getMenuInfo()返回的值始终为空。

@Override
public boolean onContextItemSelected(MenuItem item) {
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
    System.out.println(info.targetView);
    return true;
}

有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

导致此问题是因为要向所有子项添加上下文菜单,只需向父项添加上下文菜单即可。但是,仅支持其他视图(例如ListView),而不支持布局。