碎片Fragment的初识

Posted on 2017-07-08 10:08  番茄番茄  阅读(127)  评论(0编辑  收藏  举报

碎片(Fragment)是一个可以合理分配屏幕的UI片段。

除主界面外,新建碎片布局文件(xml文件),在其xml文件相对应的.java文件中继承Fragment,
    public class LeftFragment extends Fragment{
    @Override
    public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){
    View view=inflater.inflate(R.layout.left_fragment,container,false);
    returnview;
    }
    }

 

然后修改主布局文件:
    <fragment
    android:id="@+id/left_fragment"
    android:name="com.example.fragmenttest.LeftFragment"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1"
    />

 

动态添加碎片布局:
1.创建待添加的碎片实例。
2.获取到FragmentManager,在活动中可以直接调用getFragmentManager()方法得到
3.开启一个事务,通过调用beginTransaction()方法开启。
4.向容器内加入碎片一般使用replace()方法实现需要传入容器的id添加的碎片实例(也就是.Java文件的对象)。
5.提交事务,调用commit()方法来完成。
    public void onClick(Viewv){
    switch(v.getId()){
    case
    R.id.button:
    AnotherRightFragment fragment = new AnotherRightFragment();
    FragmentManager fragmentManager = getFragmentManager();
    FragmentTransaction transaction = fragmentManager.
    beginTransaction();
    transaction.replace(R.id.right_layout,fragment);
    transaction.commit();
    break;
    default:
    break;
    }
    }

 

添加布局模拟返回上一层,即点击back键返回上一层页面,跳转前的页面,在提交事务之前添加一个addToBackStack()方法,
  1. transaction.addToBackStack(null);

    还有碎片和活动之间的通讯,调用一个indFragmentById()方法,

    1
        
    RightFragment rightFragment = (RightFragment) getFragmentManager().findFragmentById(R.id.right_fragment);

     

  2.  


    这样就可以在活动中调用碎片里面的方法了。
    在碎片中调用活动中的方法大致相同,

    MainActivity mainActivity = (MainActivity) getActivity();

     

     


    所谓的活动就是你项目的主函数mainActivity