Fragment的使用
来源:互联网 发布:sql server创建视图 编辑:程序博客网 时间:2024/05/29 13:45
静态使用
<fragment android:id="@+id/id_fragment_title" android:name="com.zhy.zhy_fragments.TitleFragment" android:layout_width="fill_parent" android:layout_height="45dp" /> 在布局中使用:id和name需要注意
public class TitleFragment extends Fragment { private ImageButton mLeftMenu; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_title, container, false); mLeftMenu = (ImageButton) view.findViewById(R.id.id_title_left_btn); mLeftMenu.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getActivity(), "i am an ImageButton in TitleFragment ! ", Toast.LENGTH_SHORT).show(); } }); return view; } }
动态的使用
<FrameLayout android:id="@+id/id_content" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_above="@id/id_ly_bottombar" android:layout_below="@id/id_fragment_title" /> 这是在布局中的一个帧布局
FragmentManager fm = getFragmentManager(); FragmentTransaction transaction = fm.beginTransaction(); mWeixin = new ContentFragment(); transaction.replace(R.id.id_content, mWeixin); transaction.commit(); 这里的R.id.id_content就是那个帧布局 --事务一定要提交才管用当使用3.0以下的版本的话 需要使用 getSupportFragmentManager()
FragmentTransaction常用API
- transaction.add() 在Activity中添加一个Fragment
- transaction.remove() 从Activity中移除一个Frg,如果Frg没有添加到返回栈中就会被销毁
- transaction.replace() 使用另外一个Frg替换当前的Frg实际上就是add和remove的集合
- transaction.hide() 隐藏当前的Frg仅仅设置为不可见,并不会销毁
- transaction.show() 显示之前隐藏的Frg
- transaction.detach() 将View从UI中移除,和remove()不同在此时Frg依然会被FragmentManager所维护
- transactin.attach() 重建Viwe视图附加到UI上
注意:可能会经常遇到这样Activity状态不一致:State loss这样的错误。主要是因为:commit方法一定要在Activity.onSaveInstance()之前调用。
关于如何添加一个Fragment事务到回退栈
FragmentManager fm = getFragmentManager(); FragmentTransaction transaction = fm.beginTransaction(); transaction .add(R.id.id_content , fThree, "THREE"); transaction .addToBackStack(null); transaction .commit(); 对于回退张的理解:类比Activity返回栈的效果,一次事务的操作不就是把旧的Frg隐藏移除啊等新的Frg显示,那么这个新的Frg就在Activity上覆盖一层这么比较好理解,返回键是返回的栈中的界面,移除top显示下面的界面,想象一下效果就好
Fragement和Activity的通信
- 如果你Activity中包含自己管理的Fragment的引用,可以通过引用直接访问所有的Fragment的public方法
- 如果Activity中未保存任何Fragment的引用,那么没关系,每个Fragment都有一个唯一的TAG或者ID,可以通过getFragmentManager.findFragmentByTag()或者findFragmentById()获得任何Fragment实例,然后进行操作。
- 在Fragment中可以通过getActivity得到当前绑定的Activity的实例,然后进行操作。
0 0
- ViewPage+Fragment的使用
- Fragment的使用
- Android Fragment的使用
- Android-Fragment的使用
- Android Fragment的使用
- Android Fragment的使用
- Android Fragment的使用
- Fragment的使用
- Android Fragment的使用
- Fragment的使用
- Fragment的简单使用
- Fragment的使用
- fragment的使用
- Android Fragment的使用
- android Fragment 的使用
- Fragment的使用
- Android Fragment的使用
- Android Fragment的使用
- this关键字
- c语言----交换a,b的值(分别用临时变量,加减法,异或实现)
- 解决listview加载网络图片乱跳
- 构造方法
- android事件分发源码解析(下)
- Fragment的使用
- poj 1573 Robot Motion
- 成员方法
- 地址栏中去掉端口号 java
- AcDream1007
- 读书笔记:C++ primer 5th edition--chapter12.动态内存
- 最优化算法 之 PSO算法
- hdu5378 Leader in Tree Land(概率dp+逆元)
- 数据结构(二)基本概念