У меня есть что-то вроде этого в моей деятельности:
@Override
public void onNavigationDrawerItemSelected(int position) {
Fragment fragment = null;
switch (position+1) {
case 1: {
fragment = new Fragment_Login();
FragmentManager frgManager = getFragmentManager();
frgManager.beginTransaction().replace(R.id.container, fragment)
.commit();
break;
}
case 2: {
SwipeRefreshListFragment swipeFragment = new Fragment_List_Of_Assessments();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.container, swipeFragment)
.commit();
break;
}
case 3: {
fragment = new Fragment_Report();
FragmentManager frgManager = getFragmentManager();
frgManager.beginTransaction().replace(R.id.container, fragment)
.commit();
break;
}
case 4: {
fragment = new Fragment_Settings();
FragmentManager frgManager = getFragmentManager();
frgManager.beginTransaction().replace(R.id.container, fragment)
.commit();
break;
}
default:
break;
}
}
Программа автоматически загружает case1, но когда выбран case2, getSupportFragmentManager загружает фрагмент поверх case1. Я предполагаю, что есть некоторые проблемы с использованием как supportFragmentManager, так и FragmentManager. Кажется, у них есть собственный стек. Проблема в том, что я не могу использовать только один из них, потому что пример Android SwipeToRefresh использует ListView, для которого требуется support.v4.Fragment, для которого нужен старый FragmentManager. Так как же можно интегрировать оба FragmentManager вместе?
android.support.v4.Fragment
для всех вашихFragments
, и вам будет намного проще. Почти все в библиотеках поддержки будет основано на поддержкеFragments
. - person Kevin Coppock   schedule 27.01.2015