大家好 在我的应用程序中,我有一个可以添加许多 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/