簡體   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