标签:
一、什么事Fragment
Fragment是一种可以嵌入在Activity中的UI片段,它能让程序更加合理和充分的利用大屏幕空间,因而在平板和目前的大屏手机上应用的非常广泛。
一个碎片在一个活动中代表一个行为或用户界面的一部分。你可以在一个单一的活动中组合使用多个碎片建立一个多窗格的UI,并且可以在多个活动中重用一个碎片。
Activity的频繁创建和销毁比较消耗时间,使用Fragment可以避免这种情况。
Fragment是轻量级的Activity:Fragment不需要再清单文件中注册。
二、静态使用Fragment
这是使用Fragment最简单的一种方式,吧Fragment当成普通的控件,直接写在Activity的布局文件中。
注意:Fragment的onCreateView必须实现,这个方法的返回视图决定了这个Fragment的显示视图。
三、动态使用Fragment
静态使用Fragment仅仅是Fragment最简单的功能而已。Fragment真正的强大之处在于可以动态的添加到Activity中,在程序运行时向Activity添加Fragment,程序的界面就可以定制的更加多样化。
四、Fragment与Activity之间传值
4.1 分别获取到对方
注意:id或tag都是在布局文件中使用<fragment.../>标签是指定的。
4.2传递数据
Fragment:
android.app.Fragment
public class LeftFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup conainer,
Buddle savedInstanceState){
View view=inflater.inflate(R.layout.left_fragment,container,false);
return view;
}
}
这里重写了Fragment的onCreateView方法,然后在这个方法中通过LayoutInflater的inflate方法将定义的left_fragment布局动态加载进来
FrameLayout布局,没有任何的定位方式,所有控件都摆放在左上角
动态的添加碎片:
1.创建待添加的碎片实例
2.获取到FragmentManager,在活动中可直接调用getFragmentManager()方法得到
3.开启一个事务,通过调用beginTransation()方法开启
4.向容器内加入碎片,一般使用replace()方法实现,需要传入容器的id和待添加的碎片实例
5.提交事务,调用commit()方法完成
RightFragment fragment=new RightFragment();
FragmentManager fragmentManager=getFragmentManager();
FragmentTransation transation=fragmentManager.beginTransation();
transation.replace(R.id.left_layout,fragment);
transation.commit();
碎片和活动之间进行通信
为了方便碎片和活动之间进行通信,FragmentManager提供了一个类似于findViewById()的方法,专门用于从布局文件中获取碎片的实例:
RightFragment fragment=(RightFragment)getFragmentManager().findFragmentById(R.id.right_fragment);
在碎片中调用活动里的方法:
在每个碎片中都可以通过调用getActivity()方法来得到和当前碎片向关联的活动实例
MainActivity activity=(MainActiviy)getActivity();
碎片和碎片之间的通信:
首先在一个碎片中得到一个和他相关连的活动,在通过这个活动去或阿奴另外一个碎片的实例
android:padding表示给这个控件周围加上补白,不至于让文本内容紧靠在边缘上
android:ellipise用于设定当文本内容超出控件宽度时,文本的缩略方式,指定为end表示在为不进行缩略
标签:
原文地址:http://www.cnblogs.com/chhom/p/5590450.html