2018-10-08

Fragment使用


为什么需要Fragment

使用Fragment可以将一个复杂的界面和代码逻辑给切分成小区块,以明朗化设计,便于后期的查错和维护。

Fragment的使用步骤

新建类继承Fragment

在新建Fragment时,仅勾选Create layout XML,建一个简单的Fragment
如 public class fragment extends Fragment {.........}

设计Fragment的布局

根据需求设计界面,界面的初始化和刷新可以在对应的Fragment中完成。

在主活动布置FrameLayout

新建Framelayout,设置id为layout,作为加载Fragment的容器

在主活动中引入Fragment

1、新建fragment型变量newFragment
public fragment newFragment = new fragment();

2、新建FragmentManager型变量 fragmentManager
FragmentManager fragmentManager = getFragmentManager();

3、新建FragmentTransaction型变量 transaction
FragmentTransaction transaction = fragmentManager.beginTransaction();

4、再调用replace方法加载fragment到容器后并提交
transaction.replace(R.id.layout,newFragment);
transaction.commit();
另外还有add、remove等方法,可自行摸索

活动和Fragment的互动

在活动中调用Fragment的方法

1、在活动中找到layout中的fragment
fragment newFragment = (fragment) getFragmentManager().findFragmentById(R.id.layout);

2、调用fragment的方法刷新界面
newFragment.refresh(input data);

在Fragment中调用活动的方法

1、新建活动型变量MainActivity mainActivity,初始化代码如下:
mainActivity=(MainActivity)getActivity();

2、调用其方法即可
mainActivity.sendDataToPd(cmd);


Fragment使用时的注意

1、界面控件每次加载都需要初始化,因为仅View型变量做为返回值传递给上层了,其他的控件属性均由Fragment自行保存。
2、若FrameLayout中有加载过多个fragment,在活动重要判断找到的是哪个Fragment。
3、使用Fragment的replace方法时,不同Fragment之间的切换能够轻易被察觉,会给用户不好的UI交互体验,目前可行的解决办法是在提花或是加载Fragment时,同时对界面元素进行刷新,避免直接加载布局元素的默认属性。

你可能感兴趣的:(2018-10-08)