Я работал над образцом кода NavigationDrawer с сайта developer.android.com и попытался реализовать его в качестве навигации для одного из моих приложений. Тем не менее, я столкнулся с проблемой, когда дело дошло до переключения фрагментов в главном окне, так как пример кода повторяет один и тот же фрагмент и просто отключает изображение. Вот код из образца:Переключение целых фрагментов в NavigationDrawer
private class DrawerItemClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
selectItem(position);
}
}
private void selectItem(int position) {
// update the main content by replacing fragments
Fragment fragment = new PlanetFragment();
Bundle args = new Bundle();
args.putInt(PlanetFragment.ARG_PLANET_NUMBER, position);
fragment.setArguments(args);
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
setTitle(mPlanetTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
}
где PlanetFragment является общим фрагментом с только ImageView и без функциональных групп, которые не применяются для моего приложения. Таким образом, вместо этого, я попробовал и заменить первый блок метода SelectItem с корпуса/переключатель:
public void selectItem(int position){
Fragment fragment;
switch(position){
case 1: fragment = new Fragmentscreentest(); break;
case 2: fragment = new Fragmentstatusbar(); break;
case 3: fragment = new Fragmentfullscreen(); break;
default: fragment = new Fragmentscreentest(); break;
}
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
setTitle(mPlanetTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
}
и добавил тот же пустой constuctor моих фрагментов как PlanetFragment имеет:
public Fragmentstatus() {
// Empty constructor required for fragment subclasses
}
Это не работает, всякий раз, когда я открываю приложение, он отображает только значок приложения и заголовок в панели действий, отсутствие содержимого, никаких действий на панели действий, никакого ящика навигации, ничего, а затем он падает примерно через секунду. С исходным кодом он работает и показывает все, но работает только для одного фрагмента.
Как я могу фактически переключать фрагменты в NavigationDrawer?
Опубликовать трассировку стека аварии с вашего логарифма. – Akash
Спасибо, уже исправлено. Ответ от mike.b93 и исправление несвязанной ошибки. –