加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 使用DrawerLayout时检查当前打开的片段位置

发布时间:2020-12-15 05:11:00 所属栏目:Java 来源:网络整理
导读:我正在使用支持库中的 Android DrawerLayout来显示幻灯片菜单.我在DrawerLayout菜单中使用单个活动和5-6个片段来显示它们.但是我有一个小问题,“我如何检查当前哪个片段如果用户选择了与已经打开的片段相对应的菜单项,则可见.目前它再次创建片段并显示不好的
我正在使用支持库中的 Android DrawerLayout来显示幻灯片菜单.我在DrawerLayout菜单中使用单个活动和5-6个片段来显示它们.但是我有一个小问题,“我如何检查当前哪个片段如果用户选择了与已经打开的片段相对应的菜单项,则可见.目前它再次创建片段并显示不好的.点击菜单项时触发的功能是:

private void selectItem(int position) {

        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        // Locate Position
        switch (position) {
        case 0:
            ft.replace(R.id.content_frame,fragment1);
            break;
        case 1:
            ft.replace(R.id.content_frame,fragment2);
            break;
        case 2:
            ft.replace(R.id.content_frame,fragment3);
            break;
        }
        ft.commit();
        mDrawerList.setItemChecked(position,true);
        // Close drawer
        mDrawerLayout.closeDrawer(mDrawerList);
    }

如何检查所请求的片段是否已经打开,以便不再创建?他们的任何方法是通过FragmentManager检查吗?

解决方法

我会补充@ Plato的回答.
检查 get currently displayed fragment问题,如果你还没有.

答案说,当您在事务中添加片段时,可以使用标记来表示特定片段.就像是:

ft.replace(android.R.id.content,fragment,"MY_FRAGMENT");

稍后如果要检查该片段是否可见,您可以执行以下操作:

RequestedFragment fragment = (RequestedFragment)getFragmentManager().findFragmentByTag("MY_FRAGMENT"); //"My_FRAGMENT" is its tag
if (fragment.isVisible()) {
   // add your code here 
}

希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读