menuitem.getmenuinfo在onContextItemSelected中为null

时间:2013-09-09 03:45:58

标签: android android-contextmenu

我有ScrollView嵌入式LinearLayout,如ScrollView文档中所述。以下是布局的缩小:

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

    <LinearLayout
        android:id="@+id/top"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    </LinearLayout>

</ScrollView>

我在许多使用ListView而不是ScrollView的活动中使用以下模式,没有任何问题。因此,ScrollView的问题似乎是独一无二的。

final ScrollView scrollView = (ScrollView) frame.findViewById(R.id.tab2_view); 
final LinearLayout layout = (LinearLayout) frame.findViewById(R.id.top); 

//load and sort backing ArrayList

//neither of these calls resolve the issue
registerForContextMenu(scrollView);
//registerForContextMenu(layout);

//load layout with views

这是问题发生的地方。从item.getMenuInfo()返回的值始终为null。

@Override
    public boolean onContextItemSelected(MenuItem item){
        boolean result = false;
        try 
        {
            AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); //why is this null???
            switch (item.getItemId()) {
                //do stuff
            }
        }
        catch (Exception e) { ExceptionHandler.handleException(LOG_TAG, e); }
        return result;
    }

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

我确实找到了维护状态变量的方法,并检查menuItem的标题而不是空AdapterContextMenuInfo。但是,我更愿意了解如何从所选的AdapterContextMenuInfo中获取MenuItem

我一直在浏览SO帖子。它们似乎都植根于复制/粘贴错误,或者没有在正确的对象上调用registerForContextMenuThis is the only article that suggests there's an issue aside from this.

0 个答案:

没有答案