我正在尝试执行以下操作。创建一个新的片段 B(菜单),将其从右侧滑入,我想将已显示的片段 A 移动(不隐藏或替换!)左侧。
我从 Fragment B 得到了 Transaction,但 Fragment A 根本没有改变他的位置。好像,我FragmentManager
不知道 Fragment A 存在(Fragment A 不是动态添加的,它是在 XML 中定义的)。
main_screen_layout-xml
<RelativeLayout //... android:id="@+id/main_screen" tools:context=".MainActivity" <fragment android:id="@+id/map_screen" android:layout_width="fill_parent" android:layout_height="fill_parent" class="com.google.android.gms.maps.SupportMapFragment" > </fragment>
分片交易
FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction ft = fragmentManager.beginTransaction(); ft.add(R.id.main_screen, new MenuFragment(), MENU_FRAGMENT); //adding Fragment B ft.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left_cut); ft.addToBackStack(null); ft.commit();
片段 A 存在于其中FragementManager
,我可以隐藏它,但这不是我的目标
Fragment fragmentA = fragmentManager.findFragmentById(R.id.map_screen);
ft.hide(fragmentA); //hide FragmentA
我究竟做错了什么?
一些注意事项:
- 我正在使用支持库 (android.support.v4.app.FragmentManager..),但在 API 17 上进行测试
- 如前所述,我没有特别声明 FragmentA
FragmentManager
(尝试过,但它说 Fragment 已经存在) - 片段 A 是(如您在 XML 中看到的)类的谷歌地图
SupportMapFragment
- 动画 XML 正在运行,这就是我没有发布它的原因