Ящик с навигационным контроллером кнопка назад - PullRequest
0 голосов
/ 19 января 2020

У меня есть одно действие и несколько фрагментов, и я пытаюсь использовать навигационный контроллер. Я выбираю пункт меню, фрагмент изменен. Но при нажатии кнопки назад открывается только ящик. Вот мой код:

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 Я делаю неправильно? Заранее спасибо
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...