Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.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_Navigation Drawer - Fatal编程技术网

如何在Android导航抽屉活动中使用导航按钮而不使用片段

如何在Android导航抽屉活动中使用导航按钮而不使用片段,android,android-fragments,navigation-drawer,Android,Android Fragments,Navigation Drawer,我正在尝试在导航抽屉活动的导航部分设置注销按钮。在这种情况下,我不需要打开片段。单击按钮时,需要显示登录页面。但当我点击按钮时,它什么也不做。我需要碎片吗?像片段中的开始活动 如果片段是强制性的,当我按下手机上的“后退”按钮时,应用程序是否会返回到主片段?MainFragment(第一个片段->注销片段->登录活动,当我点击“后退”按钮时,我可以让它转到第一个片段,而不是注销(第二个)片段 这就是我编码的方式,但没有工作 在“菜单”下的文件夹活动\u抽屉 <?xml version="1.

我正在尝试在导航抽屉活动的导航部分设置注销按钮。在这种情况下,我不需要打开片段。单击按钮时,需要显示登录页面。但当我点击按钮时,它什么也不做。我需要碎片吗?像片段中的开始活动

如果片段是强制性的,当我按下手机上的“后退”按钮时,应用程序是否会返回到主片段?MainFragment(第一个片段->注销片段->登录活动,当我点击“后退”按钮时,我可以让它转到第一个片段,而不是注销(第二个)片段

这就是我编码的方式,但没有工作

在“菜单”下的文件夹活动\u抽屉

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:showIn="navigation_view">

    <group android:checkableBehavior="single">
        <item
            android:id="@+id/nav_menu"
            android:icon="@drawable/ic_restaurant_black_24dp"
            android:title="@string/menu_Menu" />
        <item
            android:id="@+id/nav_cart"
            android:icon="@drawable/ic_shopping_cart_black_24dp"
            android:title="@string/menu_cart" />
        <item
            android:id="@+id/nav_orders"
            android:icon="@drawable/ic_assignment_turned_in_black_24dp"
            android:title="@string/menu_orders" />
        <item
            android:id="@+id/nav_logout"
            android:icon="@drawable/ic_exit_to_app_black_24dp"
            android:title="@string/menu_Logout" />
    </group>
</menu>

在尝试了这么多不同的方法后,我意识到我需要使用碎片,我可以使用“返回充气机。充气(R.layout.activity_home,container,false)”,当我单击“后退按钮”时在电话中,它会转到我想看的特定活动。但是,它有时会转到主活动而不是回家活动…我仍在检查何时发生这种情况。如果有人知道或经历过类似的事情,请与我分享。谢谢。尝试了这么多不同的方法后,我意识到我需要使用片段,我可以使用“返回充气机。充气(R.layout.activity_home,container,false);”当我单击“后退”按钮时在电话中,它会转到我想看的特定活动。但是,它有时会转到主活动而不是回家活动…我仍在检查何时发生这种情况。如果有人知道或经历过类似的事情,请与我分享。谢谢。
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/mobile_navigation"
    app:startDestination="@+id/nav_menu">

    <fragment
        android:id="@+id/nav_menu"
        android:name="com.dav2020.orderforme.ui.menu.MenuFragment"
        android:label="@string/menu_Menu"
        tools:layout="@layout/fragment_memu">
    </fragment>


    <fragment
        android:id="@+id/nav_cart"
        android:name="com.dav2020.orderforme.ui.cart.CartFragment"
        android:label="@string/menu_cart"
        tools:layout="@layout/fragment_cart" />

    <fragment
        android:id="@+id/nav_orders"
        android:name="com.dav2020.orderforme.ui.orders.OrdersFragment"
        android:label="@string/menu_orders"
        tools:layout="@layout/fragment_orders" />
</navigation>
DrawerLayout drawer = findViewById(R.id.drawer_layout);
        final NavigationView navigationView = findViewById(R.id.nav_view);
        // Passing each menu ID as a set of Ids because each
        // menu should be considered as top level destinations.
        mAppBarConfiguration = new AppBarConfiguration.Builder(
                R.id.nav_menu, R.id.nav_cart, R.id.nav_orders, R.id.nav_logout)
                .setDrawerLayout(drawer)
                .build();
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
        NavigationUI.setupWithNavController(navigationView, navController);

        navController.addOnDestinationChangedListener(new NavController.OnDestinationChangedListener() {
            @Override
            public void onDestinationChanged(@NonNull NavController controller, @NonNull NavDestination destination, @Nullable Bundle arguments) {
                int menuId = destination.getId();

                switch (menuId){
                    case R.id.nav_menu:
                        fab.show();
                        break;
                    case R.id.nav_cart:
                        //Intent cartIntent = new Intent (Home.this, Cart.class);
                        //startActivity(cartIntent);
                        fab.hide();
                        break;
                    case R.id.nav_orders:
                        //Intent orderIntent = new Intent (Home.this, OrderStatus.class);
                        //startActivity(orderIntent);
                        fab.hide();

                        break;
                    case R.id.nav_logout:
                        Intent signIn = new Intent(Home.this, SignInActivity.class);
                        signIn.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                        startActivity(signIn);
                        fab.hide();
                        break;

                    default:
                        fab.show();
                }
            }
        });