2015-10-27 41 views
2

Hello all在我的應用程序中,我有一個可以添加多個片段的活動。片段由包含96x96縮略圖的單個圖像視圖組成,並且它們被放置在網格佈局中。我想要的是當onFling手勢檢測到時刪除特定的片段。如何刪除片段onFling手勢Android

這是我試試。我有

public class BlankFragment extends Fragment 
{ 
    ImageView image; 
    GestureDetector mDetector; 
    GestureDetector.OnGestureListener gestureListener; 
    public BlankFragment() { 
     // Required empty public constructor 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) 
    { 
     cr = getActivity().getContentResolver(); 
     mDetector = new GestureDetector(getActivity().getApplicationContext(),new MyFlingGesture()); 
     image = new ImageView(getActivity().getApplicationContext()); 

     image.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View view, MotionEvent motionEvent) { 
       mDetector.onTouchEvent(motionEvent); 
       return true; 
      } 
     }); 


     return image; 
    } 
    class MyFlingGesture extends GestureDetector.SimpleOnGestureListener { 
     @Override 
     public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
      FragmentManager fragmentManager = getFragmentManager(); 
      FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
      fragmentTransaction.remove(// what to pass here); 
      // or what is the other ways? 
      return super.onFling(e1, e2, velocityX, velocityY); 
     } 
    } 

} 

如果我測試我的手機上,我能夠檢測掃視姿勢。如何刪除該片段?

回答

1

如果你的背景上有你的碎片,只需撥打finish()即可。如果你不把碎片放在背後,或者你只是想確保它能正常工作,請使用:

首先,你需要添加一個field來存儲活動片段。在你BlankFragment類添加

public BlankFragment mBlankFragment; 

oncreateview使用

getActivity().getFragmentManager().beginTransaction().remove(mBlankFragment).commit(); 

這樣做是另一種方式添加

mBlankFragment = this; 

現在你可以在掃視聽衆使用這個變量找出活動片段正在使用的功能,如

public Fragment getVisibleFragment(){ 
    FragmentManager fragmentManager = getActivity().getFragmentManager(); 
    List<Fragment> fragments = fragmentManager.getFragments(); 
    for(Fragment fragment : fragments){ 
     if(fragment != null && fragment.isVisible()) 
      return fragment; 
    } 
    return null; 
} 
+0

但在此上下文中的「this」表示MyFlingGesture不是片段 – yerassyl

+0

@yerassyl,我更新的答案是否工作? –