registerForContextMenu没有正确调用 - 我做错了什么?

时间:2010-11-15 16:12:12

标签: android

这个问题的答案可能非常明显,但令我头疼。我有一个简单的LinearLayout,里面有一个ListView。我这样做:onCreate

public void onCreate(Bundle b) {
        super.onCreate(b);
        setContentView(R.layout.friends);
        ListView listView = (ListView) findViewById(R.id.friend_list);
        listAdapter = new CheckinListAdapter(checkins, listView, R.layout.checkin_list_item);
        listView.setAdapter(listAdapter);

        if (getLastNonConfigurationInstance() != null) {
            FriendsActivity last = (FriendsActivity) getLastNonConfigurationInstance();
            this.checkins.addAll(last.checkins);
            this.sort = last.sort;
        } else {
            refresh();
        }
        registerForContextMenu(listView);
    }

但由于某些原因onCreateContextMenu永远不会被调用!所以我做了一些研究,因为我在寄存器后加载列表,也许它没有正确注册。如果我进入ListAdapter并执行registerForContextMenu,它就会显示出来。但它与键盘的行为不正确。所以我现在对可能出现的错误感到困惑,因为我必须注册每个子项似乎有点不直观。我在网上找到的所有示例都使用ArrayAdapter。 :(

有什么建议吗?

修改

以下是更详细的信息,如果我看不到的话:

我的XML文件

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent">

    <Button android:text="@string/check_in"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:onClick="onCheckInClicked"/>

    <ListView android:id="@+id/friend_list"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"/>
</LinearLayout>

列出项目xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingTop="5dip"
        android:paddingBottom="5dip">
    <ImageView android:id="@+id/user_photo"
               android:layout_width="40dip"
               android:layout_height="40dip"
               android:scaleType="centerCrop"/>

    <LinearLayout android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:orientation="vertical"
                  android:layout_marginLeft="8dip">
        <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content">
            <Button android:id="@+id/user" style="@style/TextButton"/>

            <TextView android:text="@string/at"
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"/>

            <Button android:id="@+id/venue"
                    android:singleLine="true"
                    android:ellipsize="end"
                    style="@style/TextButton"/>

        </LinearLayout>

        <TextView android:id="@+id/venue_address" style="@style/GreyLarge"/>

        <LinearLayout android:id="@+id/checkin_detail"
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:layout_marginTop="6dip"
                      android:layout_marginBottom="6dip">

            <ImageView android:id="@+id/checkin_image"
                       android:layout_width="70dip"
                       android:layout_height="60dip"
                       android:layout_marginRight="8dip"
                       android:scaleType="centerCrop"/>

            <TextView android:id="@+id/checkin_shout"
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"/>

        </LinearLayout>

        <TextView android:id="@+id/elapsedTime" style="@style/GreySmall"/>
    </LinearLayout>
</LinearLayout>

2 个答案:

答案 0 :(得分:14)

我花了6个小时才弄明白但事实证明我必须补充一下:

android:focusable="false"

到我的所有<Button/>代码。

相关文章:TextView and Button in each row and onListItemClick()

答案 1 :(得分:0)

执行,registerForContextMenu(listView); 在设置适配器之前,即:

之前

listView.setAdapter(listAdapter);

您已经提到菜单没有正确响应键盘操作。你能告诉我究竟是什么问题吗?