无法执行视图点击片段

时间:2017-09-15 10:17:01

标签: android android-fragments

片段布局

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:fab="http://schemas.android.com/apk/res-auto"
    style="@style/CardViewStyle1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clickable="true">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="@dimen/scale_40dp"
            android:orientation="horizontal">

            <ImageView
            android:id="@+id/ivClose"
            android:layout_width="@dimen/scale_25dp"
            android:layout_height="@dimen/scale_25dp"
            android:layout_centerVertical="true"
            android:layout_gravity="center"
            app:srcCompat="@drawable/close_red" />
            </RelativeLayout>

 </LinearLayout>

</android.support.v7.widget.CardView>

在片段中

    ImageView ivClose;
    ivClose = (ImageView) v.findViewById(R.id.ivClose);
    ivClose .setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

              Log.e("onClick","onClick");  // Cant detect 
            }
        });

我正面临一个关于片段中按钮点击的奇怪问题,试过几个解决方案没有用,我错过了什么吗?任何帮助都会受到赞赏!!!

请在回答之前阅读以下方案:

  

有两个片段我从1-> 2,2-> 1移动,当我尝试时   访问视图(在我的情况下是ivClose imageview)点击片段(1),它   再次进入2它应该关闭片段(1)并返回   活动,它与设备的默认后退按钮键一起工作。

3 个答案:

答案 0 :(得分:1)

只要在活动中定义一个名称相同的方法,onClick属性就可以正常工作。

但是,对于Fragments,需要在调用活动中定义该方法。

为片段中的按钮实现点击监听器可能更容易。

答案 1 :(得分:0)

使用View findViewById(R.id.btn_close).setOnClickListener(v -> onBackPressed());正确访问

答案 2 :(得分:0)

抱歉,您无法在Fragment中使用onClicked()方法。

您只能在Activity类中使用。

在Fragments中,你必须从findViewById()方法获取按钮实例,然后应用onClickListener来使用它。