如何回到上一个片段

how to go back to the previous fragment

我有一个带有 actionViewClass 的搜索按钮。单击此按钮时,将打开一个新片段,我希望在单击后退按钮时返回到上一个片段。

PS: 我正在使用导航图

我的toolbar_menu.xml

 <item
        android:id="@+id/search"
        android:title="Pesquisar"
        android:orderInCategory="103"
        android:icon="@drawable/ic_search"
        android:iconTint="@color/colorPrimary"
        app:showAsAction="ifRoom|collapseActionView"
        app:actionViewClass="androidx.appcompat.widget.SearchView"/>

MainActivity.java

toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
               switch (item.getItemId()){
                   case R.id.search:
                       getSupportFragmentManager().beginTransaction()
                               .replace(R.id.navHostFragment, new ContaFragment())
                               .commit();
                       break;
               }
                return false;
            }
        });

尝试将片段添加到后台堆栈

private void replaceFragment (Fragment fragment){
String backStateName = fragment.getClass().getName();

FragmentManager manager = getSupportFragmentManager();
boolean fragmentPopped = manager.popBackStackImmediate (backStateName, 0);

if (!fragmentPopped){ //fragment not in back stack, create it.
FragmentTransaction ft = manager.beginTransaction();
ft.replace(R.id.navHostFragment, fragment);
ft.addToBackStack(backStateName);
ft.commit();
 }
}

这个问题在这里有很好的答案和解释How to resume Fragment from BackStack if exists