【发布时间】:2015-03-25 15:55:26
【问题描述】:
我的活动中有这样的东西:
@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;
}
}
The program automatically loads case1, but when case2 is selected, getSupportFragmentManager loads the Fragment on top of case1.我想同时使用 supportFragmentManager 和 FragmentManager 会有一些问题。他们似乎有自己的堆栈。问题是我不能只使用其中任何一个,因为 SwipeToRefresh Android 示例使用需要旧 FragmentManager 的 support.v4.Fragment 的 ListView。那么如何将两个 FragmentManager 集成在一起呢?
【问题讨论】:
-
只需为您的所有
Fragments使用android.support.v4.Fragment类,事情对您来说会容易得多。支持库中的几乎所有内容都将基于支持Fragments。 -
但问题是我实现了 supportfragment 不支持的方法。 :/ 我希望仍然只保留和使用片段而不是支持片段。这可能吗?
-
如果您想使用支持库中的功能,请不要这样做。您在原生 Fragment 中实现了哪些支持 Fragment 无法实现的功能?在大多数情况下,迁移应该只是导入的变化。