为一个activity添加一fragment
有两种方法,一种是直接使用指定的fragment 为加载.另一种是使用容器为添加,为其指定一个root,这个到时候直接替换
这个两种都需要FragmentTransaction来管理fragment和操作
第一种方法的操作:使用getFragmentManager().findFragmentById(R.id.fragment1)); 并用commit()来提交;如
<LinearLayout android:orientation="horizontal" android:padding="4dip"
android:gravity="center_vertical" android:layout_weight="1"
android:layout_width="match_parent" android:layout_height="wrap_content">
<Button android:id="@+id/frag1hide"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="Hide" />
<fragment android:name="com.example.android.apis.app.FragmentHideShow$FirstFragment" //FragmentHideShow为自己 定义在
android:id="@+id/fragment1" android:layout_weight="1"
android:layout_width="0px" android:layout_height="wrap_content" />
</LinearLayout>
如需要添加动画效果则
1. getFragmentManager().setCustomAnimations(android.R.animator.fade_in,
android.R.animator.fade_out);
if (fragment.isHidden()) {
ft.show(fragment);
button.setText("Hide");
} else {
ft.hide(fragment);
button.setText("Show");
}
ft.commit();
2. ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
//Select a standard transition animation for this transaction. May be one of TRANSIT_NONE
, TRANSIT_FRAGMENT_OPEN
, or TRANSIT_FRAGMENT_CLOSE
对于第二种则: FragmentTransaction ft = getFragmentManager().beginTransaction();
DialogFragment newFragment = MyDialogFragment.newInstance();
ft.add(R.id.embedded, newFragment);
ft.commit();
其中R.id.embedded 为容器的
<FrameLayout
android:id="@+id/embedded"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
若要添加多个fragment 在一个容器里,则需要要
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.setCustomAnimations(R.animator.fragment_slide_left_enter,
R.animator.fragment_slide_left_exit,
R.animator.fragment_slide_right_enter,
R.animator.fragment_slide_right_exit);
ft.replace(R.id.simple_fragment, newFragment);
ft.addToBackStack(null);
ft.commit();