【问题标题】:OnItemClickListener in Fragment not working片段中的 OnItemClickListener 不起作用
【发布时间】:2014-05-14 18:20:16
【问题描述】:

我试图自己解决问题,但我不能,我也在寻找类似问题的答案,但我找不到答案。我有一个扩展 ActivityFragment 的活动,然后在该活动中我有一个片段。这个片段有一个带有 OnItemClickListener 的 ListView。当单击 ListView 中的一个项目但没有发生任何事情时,我正在尝试启动一项活动,我真的不知道问题出在哪里,它没有崩溃,只是没有发生任何事情。我尝试通过使用 OnClickListener 的按钮来执行此操作,并且没有问题。任何帮助将不胜感激。

Java 代码:

/**
 * Instantiate a layout XML file into its corresponding view object.
 * @return view
 */
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {

    ViewGroup view = (ViewGroup) inflater.inflate(R.layout.fragment_favourites_profiles, container, false);

    email = getActivity().getIntent().getStringExtra("Email");

    //Call loadProfiles method
    loadProfiles();

    // Gets ListView
    lv = (ListView) view.findViewById(android.R.id.list);

    // Listener that acts when profile is selected
    lv.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> parent, View v,
                        int position, long id) {


                    Intent in = new Intent(getActivity(), ProfileView.class);

                    //Starts activity 
                    startActivity(in);
                }
            });

    return view;  


}

XML 列表视图:

    <ListView
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true" 
    android:divider="@color/color_black"
    android:dividerHeight="1dp">

</ListView>

感谢您的帮助

【问题讨论】:

  • 对此有一个建议,在OnItemClickListener中放一个日志状态,看看是否调用了该方法。
  • getApplicationContent() 在片段中未定义
  • @LucianoSantis 你在哪里将适配器设置为列表视图
  • 确保列表视图项中没有视图项窃取点击事件,例如。按钮、复选框、任何带有 clickable="true" 的视图等

标签: android listview android-fragments


【解决方案1】:

您使用的是 ListFragment 吗?如果是这种情况,则不要添加此 OnItemClickListener,而是覆盖片段中的方法 onListItemClick。它更适合此目标。

【讨论】:

  • 如果是这种情况,只需调用getListView()并删除ViewGroup view = (ViewGroup) inflater.inflate(R.layout.fragment_favourites_profiles, container, false);,然后返回super.onCreaetView()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多