У меня есть одно действие и несколько фрагментов, и я пытаюсь использовать навигационный контроллер. Я выбираю пункт меню, фрагмент изменен. Но при нажатии кнопки назад открывается только ящик. Вот мой код:
publi c Класс MainActivity расширяет AppCompatActivity, реализует HomeFragment.OnFragmentInteractionListener, LibraryFragment.OnFragmentInteractionListener, UserProfileFragment.OnFragmentInteractionLinteer {
private DrawerLayout drawerLayout;
private NavigationView navigationView;
private Toolbar toolbar;
public NavController navController;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
navController = Navigation.findNavController(this, R.id.nav_host_fragment);
drawerLayout = findViewById(R.id.drawer_layout);
navigationView = findViewById(R.id.nav_view);
initDrawer();
View header = navigationView.getHeaderView(0);
View userPicture = header.findViewById(R.id.user_pic);
userPicture.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showUserProfile();
}
});
}
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
switch (item.getItemId()){
case android.R.id.home:
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else if (navController.popBackStack()){
} else {
drawer.openDrawer(GravityCompat.START);
}
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onFragmentInteraction(Uri uri) {
}
private void initDrawer(){
Toolbar toolBar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolBar);
ActionBar actionBar = getSupportActionBar();
NavigationUI.setupActionBarWithNavController(this, navController, drawerLayout);
NavigationUI.setupWithNavController(navigationView, navController);
}
private void showUserProfile(){
if(drawerLayout.isDrawerOpen(GravityCompat.START)){
drawerLayout.closeDrawer(GravityCompat.START);
}
navController.navigate(R.id.userProfileFragment);
}
1004 *1004* 1004 * 1004 Я делаю неправильно? Заранее спасибо