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 关闭

当用户触摸视图时关闭键盘

当用户触摸警报时,如何防止我的 SDCAlertview 关闭?

如何在 iPad 上的 jquery 外部单击关闭菜单

如何正确关闭 UIPopover?

让 UIPopoverController 不因外部接触而辞职?