片段不让我使用setOnClickListener

时间:2016-06-20 09:27:43

标签: android

我正在尝试在我的片段上使用setOnClickListener,但它并没有让我说我需要实现onClick到onClickListener,我有...有人可以解释一下我做错了吗?

片段代码:

package layout;


import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;


import test.testing.R;

/**
 * A simple {@link Fragment} subclass.
 */
public class BlankFragment extends Fragment implements View.OnClickListener{


    public BlankFragment() {
        // Required empty public constructor
    }

    ImageView event1 = (ImageView) getView().findViewById(R.id.gray_circle1);
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View v = inflater.inflate(R.layout.fragment_blank, container, false);
        LinearLayout event = (LinearLayout) v.findViewById(R.id.ev1);
        event.setOnClickListener(new onClickListener()
        {
            @Override
            public void onClick(View v){
                event1.setBackgroundResource(R.drawable.colorcircle);
            }
        });
        return v;
    }

}

片段XML:     

    <!-- TODO: Update blank fragment layout -->

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="20dp"
        android:id="@+id/ev1"
        android:onClick="activate"
        android:orientation="horizontal">
        <ImageView
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:id="@+id/gray_circle1"
            android:background="@drawable/graycircle"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:paddingLeft="20dp"
            android:gravity="center_vertical"
            android:textColor="#ffffff"
            android:text="Event 1"/>
    </LinearLayout>
    <!-- Event 2 -->
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="20dp"
        android:orientation="horizontal">
        <ImageView
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:background="@drawable/graycircle"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:paddingLeft="20dp"
            android:gravity="center_vertical"
            android:textColor="#ffffff"
            android:text="Event 1"/>

    </LinearLayout>
    <!-- Event 3 -->
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="20dp"
        android:orientation="horizontal">
        <ImageView
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:background="@drawable/graycircle"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:paddingLeft="20dp"
            android:gravity="center_vertical"
            android:textColor="#ffffff"
            android:text="Event 1"/>

    </LinearLayout>


</LinearLayout>

谢谢。

2 个答案:

答案 0 :(得分:1)

你做错了以下事情:

event.setOnClickListener(new onClickListener()
        {
            @Override
            public void onClick(View v){
                event1.setBackgroundResource(R.drawable.colorcircle);
            }
        });

而不是你应该这样做:

event.setOnClickListener(this);

并覆盖片段中的onClick方法:

@Override
public void onClick(View v){
    event1.setBackgroundResource(R.drawable.colorcircle);
}

答案 1 :(得分:0)

除了@ shridutt_kothari的回答,您还可以执行以下操作

event.setOnClickListener(new View.OnClickListener()
    {
         @Override
         public void onClick(View v) {
              event1.setBackgroundResource(R.drawable.colorcircle);
         }
    });

请注意,使用此解决方案不需要您的片段类实现View.OnClickListener