首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除片段onFling手势

如何删除片段onFling手势
EN

Stack Overflow用户
提问于 2015-10-27 13:21:00
回答 1查看 302关注 0票数 2

大家好,在我的应用程序,我有一个活动,我可以添加许多片段。片段由包含96x96缩略图的单个图像视图组成,它们被放置在网格布局中。我想要的是在检测到onFling手势时删除特定的片段。

这是whatI的尝试。我有过

代码语言:javascript
复制
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手势。怎么删除那个片段?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-27 13:33:44

如果将片段放在后台,只需调用finish()就可以了。如果您不将片段放在后台,或者您只想确保它工作正常,请使用:

首先,需要添加一个field来存储活动片段。在BlankFragment类中添加

代码语言:javascript
复制
public BlankFragment mBlankFragment;

oncreateview中添加

代码语言:javascript
复制
mBlankFragment = this;

现在,您可以在fling监听器中使用以下变量:

代码语言:javascript
复制
 getActivity().getFragmentManager().beginTransaction().remove(mBlankFragment).commit();

另一种方法是找出活动片段使用的函数是什么,比如

代码语言:javascript
复制
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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33369142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档