2016-04-01 10 views
1

私は怒っていますが、間違いを理解していないので、助けてください。ViewPagerでOnLongClickListenerがトリガーされていない

レイアウトxmlにViewPagerがありますが、このページャにはFragmentStatePagerAdapterがあります。基本的には、ViewPagerに異なるフラグメントをロードしています。

しかし、断片の数は、ユーザーが特定のアクションによって決定されるとViewPagerを始めるためには、任意のフラグメントをロードしません、私は意味FragmentStatePagerAdapterカウントがトリガーに0

今、私は長い間保留にユーザーをしたいViewPagerなります何らかのアクション。私はonLongClick方法をviewpagerするOnLongClickListenerを追加するときしかし、トリガーはありません:(

をここでは、ここでのミスは何

pageView.setOnLongClickListener(new View.OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { 
      Log.d("sandeep","YES"); 
      return false; 
     } 
}); 

、私のコードです??助けてください。事前に感謝を。

+0

偽 –

+0

@akのサシャのinsted真のリターン:コントロールがここに到達したことがない:(ここ –

+1

OK trueまたはfalseを返すにはポイントを、ので、あなたはあなたが膨らましているレイアウトにLongClickListenerを設定することができます –

答えて

0

onPurePagerでOnTouchListenerを設定すると、長押し検出用のgestureDetectorを取得できます。 しかし、これは、ビューページャにロードされているフラグメントの親レイアウトでこれを使用することをお勧めします。

public class MainActivity extends Activity { 

    private static final String DEBUG_TAG = "Gestures"; 
    private GestureDetectorCompat mDetector; 

    // Called when the activity is first created. 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     // Instantiate the gesture detector with the 
     // application context and an implementation of 
     // GestureDetector.OnGestureListener 
     mDetector = new GestureDetectorCompat(this,new Gesture()); 

     yourViewPager.setOnTouchListener(new OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 

       return mDetector.onTouchEvent(event); 
      } 
     }); 
    } 

    class Gesture extends GestureDetector.SimpleOnGestureListener{ 
     public boolean onSingleTapUp(MotionEvent ev) { 
     } 

     public void onLongPress(MotionEvent ev) { 
     //your long press code here 
     } 

     public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, 
     float distanceY) { 
     } 

     public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
     float velocityY) { 
     } 
    } 

} 
1

OnClickListenerOnLongClickListenerページ間をスクロールできるタッチイベントをキャプチャしているため、ViewPager自体では機能しません。

onTouchListenerを設定する必要があります。キャプチャACTION_UPモーションイベント。また、ポケベルにアイテムがあるときにリスナーを削除することを忘れないでください。

+0

私はOnTouchListenerがViewPagerで適切にトリガされることに気づいたが、 ViewPagにいくつかのアクションをトリガーすることがあります(2秒間押し続けるとメニューが表示されます)。どのようにしてOnTouchListenerでそれを実現できますか?とにかくあなたの答え良い見解を投票アップ: –

+1

これは非常に良い解決策ではありませんが、これは動作する可能性があります。幅と高さが 'fill_parent'のボタンを用意し、ボタンの背景を透明にします。そのボタンで 'onLongClickListener'を入れてください。 –

+1

この回答を確認してください、私はあなたが探しているものだと思います:http://stackoverflow.com/questions/7919865/detecting-a-long-press-with-android/11679788#11679788 @ReazMurshedの回答はまた別の良いですオプション。 – emanzanomarcos

関連する問題