android:当用户触摸片段外部时,我如何关闭片段?
Posted
技术标签:
【中文标题】android:当用户触摸片段外部时,我如何关闭片段?【英文标题】:android: How can i close fragment when the user touch outside of it? 【发布时间】:2012-11-22 09:02:12 【问题描述】:大家好 =) 我是一名新的 android 开发人员,我需要关于关闭片段的帮助。
我的应用程序有一个登录片段,当用户触摸它的外部时,我想隐藏登录片段。我怎么能做这个? OnTouchEvent() 方法是否有用?
请说点什么。谢谢=)
【问题讨论】:
如果您使用的是 DialogFragment,您可以使用此处发布的答案:***.com/questions/8404140 谢谢,但它不是 DialogFragment.. 为什么不使用对话片段?无论如何,这似乎更有意义,因为您希望它看起来像一个对话框并表现得像一个.. 是的,它似乎更有用,我尝试了一下,但我的应用程序崩溃,并出现对话框片段的错误非法状态异常。 【参考方案1】:将登录布局放置在透明的全屏布局中,并在较大的布局上检测触摸事件。
【讨论】:
【参考方案2】:我认为更好的方法是删除片段以释放内存资源。
我的解决方案是在片段中使用此方法:
private void closeFragment()
getActivity().getSupportFragmentManager().beginTransaction().remove(YOUR_FRAGMENT.this).commit();
【讨论】:
【参考方案3】:再次嗨 =) 我在主页活动中使用 OnTouchListener 解决了这个问题。我的主页布局中有一个 gridviews 背景,如果用户没有登录,onTouch()
方法运行。当登录片段可见并且用户触摸它之外的我的 hideLoginFragment() 方法调用以关闭片段..
gridView = (ShelvesView) findViewById(R.id.grid_shelves);
gridView.setOnTouchListener(new OnTouchListener()
@Override
public boolean onTouch(View v, MotionEvent event)
if (application.getDbManager().getUser().key.equals("-1"))
hideLoginFragment();
loginButton.setVisibility(View.VISIBLE);
exitButton.setVisibility(View.INVISIBLE);
return false;
);
【讨论】:
以上是关于android:当用户触摸片段外部时,我如何关闭片段?的主要内容,如果未能解决你的问题,请参考以下文章
当用户触摸弹出框外部时,禁用 ipad 上的 ActionSheet 关闭