gpt4 book ai didi

android - 如何删除 fragment onFling手势Android

转载 作者:行者123 更新时间:2023-11-29 01:27:08 25 4
gpt4 key购买 nike

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

这是我的尝试。我有

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 手势。如何删除该 fragment ?

最佳答案

如果您的 fragment 在后台堆栈中,只需调用 finish() 即可。如果您不将 fragment 放在 backstack 上,或者您只是想确保它有效,请使用:

首先您需要添加一个字段 来存储 Activity fragment 。在您的 BlankFragment 类中添加

public BlankFragment mBlankFragment;

oncreateview中添加

mBlankFragment = this;

现在你可以在fling监听器中使用这个变量了

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

另一种方法是使用像这样的函数找出 Activity fragment 是什么

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;
}

关于android - 如何删除 fragment onFling手势Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33369142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com