代码之家  ›  专栏  ›  技术社区  ›  Amir Raminfar Hadi Rasouli

registerForContextMenu无法正常调用-我做错什么了?

  •  4
  • Amir Raminfar Hadi Rasouli  · 技术社区  · 15 年前

    这个问题的答案也许很明显,但它让我头痛。我有一个简单的线性布局,其中只有一个列表视图。我这样做:一次创建

    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 回复  |  直到 15 年前
        1
  •  15
  •   Community Mohan Dere    9 年前

    我花了6个小时才弄明白,但我不得不补充:

    android:focusable="false"
    

    对我所有的人 <Button/> 标签。

    相关岗位: TextView and Button in each row and onListItemClick()

        2
  •  0
  •   Swathi EP    15 年前

    Do,registerForContextMenu(列表视图); 在设置适配器之前,即:

    listView.setAdapter(列表适配器);

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