Question

I am trying out both onclick and onlongclick listeners in my code. Upon clicking the header it is supposed to fire class A and upon longclicking the header classB. Now the issue is, both fire accordingly but for the first click it doesn't do anything but second click on it works properly. What am I doing wrong? Here's my code:

public View onCreateView(final LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState) {
....
frontpageHeader = view.findViewById(R.id.frontpage_header);
        ((TextView) frontpageHeader.findViewById(R.id.header_title)).setText(getActivity().getString(R.string.header_front_page));
        frontpageHeader.setOnClickListener(this);
...
}
@Override
    public void onClick(final View view) {
        switch (view.getId()) {
        case R.id.frontpage_header:
           frontpageHeader.setOnClickListener(new OnClickListener(){

                @Override
                public void onClick(View vi) {
                    ((MainActivity) getActivity()).onNewsClicked(view);
                }

            });
            frontpageHeader.setOnLongClickListener(new OnLongClickListener() {   
                   @Override
                   public boolean onLongClick(View v) {

                       ManageNewsCategoriesActivity.newInstance(getActivity());                     
                    return true;
                   }
                  }); 
            break;
...
Was it helpful?

Solution

Because you set the onClickListener and onLongClickListener inside a onClick,why don't you set them in your onCreateView,which basically looks like this:

 public View onCreateView(final LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState) {
      frontpageHeader = view.findViewById(R.id.frontpage_header);

      frontpageHeader.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View vi) {
                ((MainActivity) getActivity()).onNewsClicked(view);
            }

        });
        frontpageHeader.setOnLongClickListener(new OnLongClickListener() {   
               @Override
               public boolean onLongClick(View v) {

                   ManageNewsCategoriesActivity.newInstance(getActivity());                     
                return true;
               }
        }); 
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top