大家好,在我的应用程序,我有一个活动,我可以添加许多片段。片段由包含96x96缩略图的单个图像视图组成,它们被放置在网格布局中。我想要的是在检测到onFling手势时删除特定的片段。
这是whatI的尝试。我有过
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);
}
}
}如果我在我的手机上测试,我就能检测到Fling手势。怎么删除那个片段?
发布于 2015-10-27 13:33:44
如果将片段放在后台,只需调用finish()就可以了。如果您不将片段放在后台,或者您只想确保它工作正常,请使用:
首先,需要添加一个field来存储活动片段。在BlankFragment类中添加
public BlankFragment mBlankFragment;在oncreateview中添加
mBlankFragment = this;现在,您可以在fling监听器中使用以下变量:
getActivity().getFragmentManager().beginTransaction().remove(mBlankFragment).commit();另一种方法是找出活动片段使用的函数是什么,比如
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;
}https://stackoverflow.com/questions/33369142
复制相似问题