java - 使用 DrawerLayout 检查当前打开的 fragment 位置

标签 java android android-layout drawerlayout

我正在使用支持库中的 android DrawerLayout 来显示幻灯片菜单。我正在使用一个 Activity 和 5-6 个 fragment 在 DrawerLayout 菜单中选择时显示它们。但是我有一个小问题是“我如何检查哪个 fragment 当前可见,因此如果用户选择了与已打开的 fragment 相对应的菜单项。目前它再次创建 fragment 并显示它是不好的。单击菜单项时触发的功能是:

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

我如何检查请求的 fragment 是否已经打开,以便不再创建它?他们有任何方法可以通过 FragmentManager 进行检查吗?

最佳答案

我会添加到@Plato 的回答中。 检查get currently displayed fragment问你是否还没有。

答案是当您在交易中添加 fragment 时,您可以使用标签来表示特定 fragment 。像这样的东西:

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

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

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

希望这对您有所帮助。

关于java - 使用 DrawerLayout 检查当前打开的 fragment 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17253458/

相关文章:

java - 数组项目似乎只打印出null

android - 如何在 android 中存储 Picasso 下载的图像?

java - 如何在android中的 ListView 中膨胀 GridView ?

Android 在后台使用相机表面 View 播放视频

android - 如何以编程方式设置编辑文本的布局高度

java - 在 C++ 和 Java 之间共享定义或枚举

java - 何时在 Java 类中实例化静态 block

java - 如何在 Java 中使用 wait()/notify()

android - 相同的布局在 Samsung Galaxy Tab 上看起来不同

c# - 在 ViewFlipper 的 View 之间滑动动画