Android学习笔记之Fragment
来源:互联网 发布:网络电台软件下载 编辑:程序博客网 时间:2024/05/21 09:33
Android学习笔记之Fragment
本笔记作为个人学习及反思使用,大部分内容为经大牛博客及官方文档借鉴后的总结,如果部分内容有侵权或不适的请联系博主解决。
1.Fragment介绍
- 个人理解:Fragment的作用偏向于将Activity中的组件分组管理,并赋予不同的生命周期,就像把屏幕中内容以块分割。每一块的内容置于独立的类中,即利于管理、减少代码的臃肿又方便产品的迭代。
2.回调方法
(除了onCreateView,其他的所有方法如果你重写了,必须调用父类对于该方法的实现)
3.基本使用方法
a.静态使用
把Fragment当做普通控件使用
1.新建一个类继承Fragment,并新建一个该Fragment的布局文件
package com.project.fragments;public class Class_Fragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { return inflater.inflate(R.layout.layout_fragment, container, false); } }
2.在布局中直接引用该布局即可
<Fragment android:id="@+id/id_fragment_1" android:name="com.project.fragments.Class_Fragment" android:layout_width="fill_parent" android:layout_height="45dp" />
b.动态使用
1.主布局使用FrameLayout
<FrameLayout android:id="@+id/frame_main_1" android:layout_width="fill_parent" android:layout_height="fill_parent" />
2.两个Fragmen页面
public class Class_Fragment_tab1 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.layout_Tab1, container, false); } }
“`java
public class Class_Fragment_tab2 extends Fragment
{@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
return inflater.inflate(R.layout.layout_Tab2, container, false);
}}
#### 3.动态使用 ``` java public class MainActivity extends Activity implements OnClickListener { private LinearLayout layout_Tab1; private LinearLayout layout_Tab2; private Class_Fragment_tab1 class_Tab1; private Class_Fragment_tab2 class_Tab2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); // 初始化控件和声明事件 layout_Tab1 = (LinearLayout) findViewById(R.id.tab_1); layout_Tab2 = (LinearLayout) findViewById(R.id.tab_2); layout_Tab1.setOnClickListener(this); layout_Tab2.setOnClickListener(this); // 设置默认的Fragment setDefaultFragment(); } //默认的Fragment private void setDefaultFragment() { FragmentManager fm = getFragmentManager(); FragmentTransaction transaction = fm.beginTransaction(); class_Tab1 = new Class_Fragment_tab1(); transaction.replace(R.id.frame_main_1, class_Tab1); transaction.commit(); } @Override public void onClick(View v) { FragmentManager fm = getFragmentManager(); // 开启Fragment事务 FragmentTransaction transaction = fm.beginTransaction(); switch (v.getId()) { case R.id.tab_1: if (class_Tab1 == null) { class_Tab1 = new Class_Fragment_tab1(); } // 使用当前Fragment的布局替代frame_main_1的控件 transaction.replace(R.id.frame_main_1, class_Tab1); break; case R.id.tab_2: if (class_Tab2 == null) { class_Tab2 = new Class_Fragment_tab2(); } transaction.replace(R.id.frame_main_1, class_Tab2); break; } // transaction.addToBackStack(); // 事务提交 transaction.commit(); } }
4.Fragment API
常用的三个类
android.app.Fragment 主要用于定义Fragmentandroid.app.FragmentManager 主要用于在Activity中操作Fragmentandroid.app.FragmentTransaction 保证一些列Fragment操作的原子性,熟悉事务这个词,一定能明白~
- getFragmentManager() 获取FragmentManage的方式
FragmentManager fm = getSupportFragmentManager();//v4包中FragmentManager fm = getFragmentManager();//v7包中
- FragmentTransaction
FragmentTransaction transaction = fm.benginTransatcion();//开启一个事务
transaction.add()
往Activity中添加一个Fragment
- transaction.remove()
从Activity中移除一个Fragment,如果被移除的Fragment没有添加到回退栈(回退栈后面会详细说),这个Fragment实例将会被销毁。 - transaction.replace()
使用另一个Fragment替换当前的,实际上就是remove()然后add()的合体~ - transaction.hide()
隐藏当前的Fragment,仅仅是设为不可见,并不会销毁 - transaction.show()
显示之前隐藏的Fragment - transaction.detach()
会将view从UI中移除,和remove()不同,此时fragment的状态依然由FragmentManager维护。 - transaction.attach()
重建view视图,附加到UI上并显示。 - transatcion.commit()
//提交一个事务
阅读全文
0 0
- android学习笔记之Fragment
- Android学习笔记之fragment
- Android学习笔记之Fragment
- Android应用开发学习笔记之Fragment
- android学习笔记之Fragment(三)
- android学习笔记之Fragment(二)
- android学习笔记之Fragment(一)
- Android Fragment系列学习笔记之二
- Android Fragment系列学习笔记之三
- Android Fragment系列学习笔记之四
- android Fragment系列学习笔记之五
- android Fragment系列学习笔记之六
- android学习笔记之Fragment(一)
- Android学习笔记031之Fragment
- [学习笔记]用户界面优化之Android Fragment
- Android学习笔记三十一之Fragment
- Android Fragment学习笔记
- android fragment学习笔记
- 转InputStream为String的几种方法
- Java经典问题总结
- 【Map】Map类型和格式设计(工作需要)
- Lua中and、or的一些特殊用法
- slf4j+log4j使用
- Android学习笔记之Fragment
- iOS-- NS_ENUM和NS_OPTIONS区别
- 【String】字符串之保留中文
- 通过使用边界像素来隐藏嵌入的二进制图像中的隐藏消息长度隐写术
- Vertx上实现IOC的问题
- 40个Java多线程问题总结
- xilinx 安装驱动失败或者驱动不适用于该平台解决方案
- 17-6-15JS
- 欢迎使用CSDN-markdown编辑器