Вначале, когда я запускаю навигационную панель, вкладка внутри фрагмента навигационной панели работает правильно. Но когда я нажимаю на кнопку «домой» в ящике, где находится фрагмент табуляции, он не загружает фрагменты должным образом и выдает ошибки. Код ниже.
Активность моего ящика:
public class TeacherDrawerActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
private DrawerLayout drawer;
@Override
protected void onCreate(Bundle savedInstanceState) {
// View decorView = getWindow().getDecorView();
// // Hide the status bar.
// int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
// decorView.setSystemUiVisibility(uiOptions);
//----------------------------------------
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_teacher_drawer);
Toolbar toolbar = findViewById(R.id.teacher_nav_drawer_toolbar);
setSupportActionBar(toolbar);
drawer = findViewById(R.id.teacher_drawer_layout);
NavigationView navigationView = findViewById(R.id.teacher_nav_view);
navigationView.setNavigationItemSelectedListener(this);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar,
R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction().replace(R.id.teacher_fragment_container,
new TeacherHomeFragment()).commit();
navigationView.setCheckedItem(R.id.teacher_nav_home);
}
}
@Override
public void onBackPressed() {
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
switch (menuItem.getItemId()){
case R.id.teacher_nav_home:
getSupportFragmentManager().beginTransaction().replace(R.id.teacher_fragment_container,
new TeacherHomeFragment()).commit();
break;
case R.id.teacher_nav_my_profile:
startActivity(new Intent(this,TeacherMyProfile.class));
break;
//Put other fragments and stuff
}
drawer.closeDrawer(GravityCompat.START);
return true;
}
}
my TeacherHomeFragment
public class TeacherHomeFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.teacher_fragment_home, container, false);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
TabLayout tabLayout = getView().findViewById(R.id.teacher_fragment_home_tab_layout);
ViewPager viewPager = getView().findViewById(R.id.teacher_fragment_home_viewpager);
TeacherPageAdapter pageAdapter = new TeacherPageAdapter(getFragmentManager(), tabLayout.getTabCount());
viewPager.setAdapter(pageAdapter);
tabLayout.setupWithViewPager(viewPager);
}
}
my FragmentPager
public class TeacherPageAdapter extends FragmentPagerAdapter {
private int numOfTabs;
public TeacherPageAdapter(@NonNull FragmentManager fm, int behavior) {
super(fm, behavior);
numOfTabs = behavior;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new TeacherSubHomeFragment();
case 1:
return new TeacherNotificationsFragment();
case 2:
return new TeacherViewProfileFragment();
default:
return null;
}
}
@Override
public int getCount() {
return numOfTabs;
}
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "HOME";
case 1:
return "NOTIFICATIONS";
case 2:
return "VIEW PROFILE";
}
return null;
}
}
Это результат Работает нормально при первом запуске приложения
Однако, когда я нажимаю кнопку home (что должно загрузить фрагмент с табуляцией
Выдает ошибку, и переключение следующих вкладок вроде частично загружает фрагменты