Я начинающий разработчик, и я интегрирую стандартный блок навигации в мое приложение с androidx.У меня проблемы с навигацией по фрагментам, так как она не работает, когда я нажимаю на элементы меню ящика.Есть два фрагмента, которые связаны с их идентификаторами и устанавливают прослушиватель onClick, но это не работает.Он просто показывает основной фрагмент, но не перемещается к другим фрагментам.
Я не знаком с функциями по умолчанию, такими как onCreateOptionsMenu(Menu menu)
и onSupportNavigateUp()
, которые создаются сами по себе, когда я создавал задание по умолчанию, поэтому я просто комментирую эти функции и, следуя руководству, реализую NavigationView.OnNavigationItemSelectedListener
, которая дает мне функцию onNavigationItemSelected(@NonNull MenuItem item)
, где я написал код для навигации по фрагментам.Но это не сработало, и когда я отлаживаю, это показывает, что onNavigationItemSelected(@NonNull MenuItem item)
не вызывается.
public class FindBarber extends AppCompatActivity implements.
NavigationView.OnNavigationItemSelectedListener {
private AppBarConfiguration mAppBarConfiguration;
ActionBarDrawerToggle toggle;
Toolbar toolbar;
DrawerLayout drawer;
NavigationView navigationView;
int OPEN, CLOSE;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_find_barber);
toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
drawer = findViewById(R.id.drawer_layout);
navigationView = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
toggle = new ActionBarDrawerToggle(this, drawer, toolbar, OPEN, CLOSE);
drawer.addDrawerListener(toggle);
toggle.syncState();
// 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_home, R.id.nav_profile, R.id.nav_kutit_wallet,
R.id.nav_terms_of_use, R.id.nav_rate_the_app, R.id.nav_contact_us)
.setDrawerLayout(drawer)
.build();*/
/* NavController navController = Navigation.findNavController(this, R.id.content_frame);
NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
NavigationUI.setupWithNavController(navigationView, navController);*/
FragmentManager fmanager = getSupportFragmentManager();
fmanager.beginTransaction().replace(R.id.content_frame, new GMap()).commit();
}
/*@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.find_barber, menu);
return true;
}
*/
// @Override
/* public boolean onSupportNavigateUp() {
*//*NavController navController = Navigation.findNavController(this, R.id.content_frame);*//*
return NavigationUI.navigateUp(navController, mAppBarConfiguration)
|| super.onSupportNavigateUp();
}*/
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId())
{
case R.id.nav_home:
getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, new GMap()).commit();
break;
case R.id.nav_profile:
getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, new Profile()).commit();
break;
}
drawer.closeDrawer(GravityCompat.START);
return true;
}
}
Нет сообщения об ошибке и не происходит сбой приложения.Когда я щелкаю элемент ящика навигации для навигации по любому фрагменту, он не показывает ничего, кроме основного фрагмента по умолчанию, который я показываю на экране.