Search code examples
androidandroid-fragmentsandroid-viewpageronlongclicklistener

View Pager with OnLongClickListener doesn't work


I have a ViewPager on which I am trying to apply onLongClickListener to change a Fragment from Activity which does not work.

mPager1.setOnLongClickListener(new View.OnLongClickListener() {
    @Override
    public boolean onLongClick(View v) {
     onViewPagerClick();
        return false;
    }
});

Fragment replacement:

 public void onViewPagerClick() {
     FragmentTransaction ft5 = getSupportFragmentManager().beginTransaction();
     fragment = new SingleProductFragment();
     container.setVisibility(View.VISIBLE);
     ft5.add(R.id.container, fragment);
     // ft.addToBackStack(null);
     ft5.commit();
     sv.setVisibility(View.INVISIBLE);
     addButton.setVisibility(View.INVISIBLE);
}

Solution

  • ViewPager doesn't consume click events so try to set the listener on your image or container layout instead of viewPager in instantiateItem().

    UPDATE

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
    LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
    ViewGroup viewPagerItem = (ViewGroup)inflater.inflate(R.layout.viewPager_item, container, false);
    ImageView imageView = (ImageView)viewPagerItem.findViewById(R.id.imageView);
    viewPagerItem.setOnLongClickListener(new View.OnLongClickListener() {
         @Override
         public boolean onLongClick(View view) {
             Toast.makeText(MainActivity.this, "TEST", Toast.LENGTH_LONG).show();
    
            return false;
         }
        });
    
      container.addView(viewPagerItem);
    
      return viewPagerItem;
    }