Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在底部航行中保持回撤_Android_Android Fragments - Fatal编程技术网

Android 在底部航行中保持回撤

Android 在底部航行中保持回撤,android,android-fragments,Android,Android Fragments,我在android应用程序中使用底部导航。我有5个片段A,B,C,D,E。片段B包含另一个片段B1。当我反向按片段B1时,它关闭应用程序。当从片段B1向后按压时,我如何移动到片段B 这是我的密码 bottomNavigationView.setOnNavigationItemSelectedListener( item -> { Fragment fragment = null;

我在android应用程序中使用底部导航。我有5个片段A,B,C,D,E。片段B包含另一个片段B1。当我反向按片段B1时,它关闭应用程序。当从片段B1向后按压时,我如何移动到片段B

这是我的密码

 bottomNavigationView.setOnNavigationItemSelectedListener(
                item -> {
                    Fragment fragment = null;

                    switch (item.getItemId()) {
                        case R.id.A:
                            fragment = new A();
                            break;
                        case R.id.B:
                            fragment = new B();
                            break;
                        case R.id.C:
                            fragment = new C();
                            break;

                        case R.id.D:
                           fragment = new D();
                           break;

                        case R.id.E:
                            fragment = new E();
                            break;

                    }
                    return loadFragment(fragment);

                });


private boolean loadFragment(Fragment fragment) {
    //switching fragment
    if (fragment != null) {
        getSupportFragmentManager()
                .beginTransaction()
                .replace(R.id.main_fragment, fragment)
                .commit();
         return true;
    }
    return false;
}

打开B1片段时,请使用此

private boolean loadFragmentB1(Fragment fragment) {
//switching fragment
if (fragment != null) {
    getSupportFragmentManager()
            .beginTransaction()
            .replace(R.id.main_fragment, fragment)
            .commit();
     return true;
当打开除B1以外的其他片段时,使用此

private boolean loadFragment(Fragment fragment) {
    //switching fragment
    if (fragment != null) {
        getSupportFragmentManager()
                .beginTransaction()
                .addToBackStack(null)
                .replace(R.id.main_fragment, fragment)
                .commit();
        return true;
    }
    return false;

}
在activity override on backpressed上,如下所示

@Override
public void onBackPressed(){
    if (getSupportFragmentManager().getBackStackEntryCount() != 0) {
        getSupportFragmentManager().popBackStack();
    } else {
        super.onBackPressed();
        finish();
    }
}

打开B1片段时,请使用此

private boolean loadFragmentB1(Fragment fragment) {
//switching fragment
if (fragment != null) {
    getSupportFragmentManager()
            .beginTransaction()
            .replace(R.id.main_fragment, fragment)
            .commit();
     return true;
当打开除B1以外的其他片段时,使用此

private boolean loadFragment(Fragment fragment) {
    //switching fragment
    if (fragment != null) {
        getSupportFragmentManager()
                .beginTransaction()
                .addToBackStack(null)
                .replace(R.id.main_fragment, fragment)
                .commit();
        return true;
    }
    return false;

}
在activity override on backpressed上,如下所示

@Override
public void onBackPressed(){
    if (getSupportFragmentManager().getBackStackEntryCount() != 0) {
        getSupportFragmentManager().popBackStack();
    } else {
        super.onBackPressed();
        finish();
    }
}

它工作正常,但在回按时,底部导航中的选定项没有变化。当我回按B1时,它将进入主片段,但底部导航中的选定项仍然指向BYO。您可以通过navigationView.getMenu().getItem(0)更改选定项。setChecked(true);它将始终设置片段A,我所需要的是当用户从B1后退时,它将移动到B,当从B后退时,它将移动到A,并将A设置为选定项。但我无法实现itLet的假设用户在B1片段上,他从底部导航中选择E,当按下back时,它应该移动到B1,但它正在移动到BIt的工作状态良好,但在按下back时,底部导航中的所选项目没有变化当我按下B1时,它将进入主片段,但bottom导航中的选定项仍指向by您可以通过navigationView.getMenu().getItem(0).setChecked(true)更改选定项;它将始终设置片段A,我所需要的是当用户从B1后退时,它将移动到B,当从B后退时,它将移动到A,并将A设置为选定项。但我无法实现itLet的假设用户在B1片段上,他从底部导航选择E,当按下back时,它应该移动到B1,但它正在移动到B