简体   繁体   English

如何在片段中添加onClick

[英]How to add onClick in Fragment

Hello i want to add onClick option in a Fragment to a ImageView. 您好,我想在片段中添加onClick选项到ImageView。 I tried a few things but failed. 我尝试了一些尝试,但失败了。 Here is my Fragmet.java 这是我的Fragmet.java

public class Info extends Fragment{ 公共类信息扩展了片段{

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

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment

    return inflater.inflate(R.layout.info, container, false);
}

} }

Override 覆写

  @Override
  public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {

and use the view object, which is the same View you are returning in onCreateView , to look for the ImageView on which you want to set your onClickListener . 并使用view对象(与在onCreateView中返回的View相同)查找要在其上设置onClickListener的ImageView。 Eg 例如

  @Override
  public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        View imageView = view.findViewById(R.id.id_of_image_view);
        imageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        }
    });
  }

Instead of returning the view directly ,do this 与其直接返回视图,不如这样做

View v=inflater.inflate(R.layout.info, container, false);

you can then use v to find reference to your ImageViews 然后可以使用v查找对ImageViews的引用

ImageView iv=(ImageView)v.findViewById(R.id.imageview_id);

then set onClickListener as usual 然后像往常一样设置onClickListener

iv.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //do something
        }
    });

You have to have an ImageView in the layout R.layout.info. 您必须在layout R.layout.info.具有ImageView layout R.layout.info. If the ImageView 's id is ivInLayout , you set an onClik mehtod like this: 如果ImageView的id是ivInLayout ,则可以这样设置onClik方法:

public class Info extends Fragment{

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

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View v = inflater.inflate(R.layout.info, container, false);

        ImageView iv = (ImageView) v.findViwById(R.id.ivInLayout);
        iv.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(){
                 <What you want onClick on the image to do>
            }
        });
        return v;
    }

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM