简体   繁体   English

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

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

I am trying to do back press moving to the previous fragment or to home fragment in my app, kindly guide me to achieve it.我正在尝试在我的应用程序中向后按移动到上一个片段或主页片段,请指导我实现它。 Thanks in advance提前致谢

Add addToBackstack(null) When You change fragments in your activity, like so:添加addToBackstack(null)当您更改活动中的片段时,如下所示:

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

Whenever you add a fragment to backstack it will be poped from it when You press back button and app will return to previous fragment that was also added to backstack.每当您将片段添加到后台堆栈时,当您按下后退按钮时,它将从其中弹出,并且应用程序将返回到也添加到后台堆栈的上一个片段。

I use this code to navigate between the fragments我使用此代码在片段之间导航

this method is responsible to load require fragment这个方法负责加载需要的片段

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

to load a fragment use:加载片段使用:

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

handle back press like this in your activity:在您的活动中像这样处理背压:

@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