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