繁体   English   中英

返回到android中的上一个片段或主页

[英]Back press to the previous fragment or home in android

我正在尝试在我的应用程序中向后按移动到上一个片段或主页片段,请指导我实现它。 提前致谢

添加addToBackstack(null)当您更改活动中的片段时,如下所示:

getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new Fragment()).addToBackStack(null).commit();

每当您将片段添加到后台堆栈时,当您按下后退按钮时,它将从其中弹出,并且应用程序将返回到也添加到后台堆栈的上一个片段。

我使用此代码在片段之间导航

这个方法负责加载需要的片段

public void loadFragment(Fragment fragment, String tag) {
        if (fragment != null) {
            getSupportFragmentManager()
                    .beginTransaction()
                    .replace(R.id.fragment_container, fragment, tag)
                    .commit();
        }
    }

加载片段使用:

loadFragment(new HomeFragment(), "HomeFragment");

在您的活动中像这样处理背压:

@Override
    public void onBackPressed() {
        HomeFragment homeFragment = (HomeFragment) getSupportFragmentManager().findFragmentByTag("HomeFragment");
        SearchFragment searchFragment = (SearchFragment) getSupportFragmentManager().findFragmentByTag("ConnectionFragment");
        NotificationFragment notificationFragment = (NotificationFragment) getSupportFragmentManager().findFragmentByTag("NotificationFragment");

        if (homeFragment != null && homeFragment.isVisible()) {
            finish();
        }
        if (searchFragment != null && searchFragment.isVisible()) {
            loadFragment(new HomeFragment(), "HomeFragment");
            navigationView.setSelectedItemId(R.id.navigation_home);

        }
        if (notificationFragment != null && notificationFragment.isVisible()) {
            loadFragment(new HomeFragment(), "HomeFragment");
            navigationView.setSelectedItemId(R.id.navigation_home);

        }

    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM