Android碎片化 UI fragment
来源:互联网 发布:mac 桌面快捷方式 编辑:程序博客网 时间:2024/06/05 03:56
Android碎片化UI fragment
请支持原创,尊重原创,转载请注明出处:http://blog.csdn.net/kangweijian(来自kangweijian的csdn博客)
1、 创建fragment容器布局(activity_main.xml)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <FrameLayout android:id="@+id/fragmentContainer" android:layout_width="match_parent" android:layout_height="match_parent" /></RelativeLayout>
2、 定义fragment视图的布局文件(fragment.xml)
<?xml version="1.0" encoding="UTF-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> </LinearLayout>
3 、 创建Fragment类(MyFragment.java)
在Fragment.onCreate(…)方法中,并没有生成fragment的视图。虽然在Fragment.onCreate(…)方法中配置了fragment实例,但创建和配置fragment视图是通过另一个fragment生命周期方法来完成的:Fragment.onCreateView(…)。
通过Fragment.onCreateView(…)方法生成fragment视图的布局,然后将生成的View返回给托管的activity。LayoutInflater以及ViewGroup是用来生成布局的必要参数。Bundle包含了供该方法在保存状态下重建视图所使用的数据。
Fragment的视图是通过调用inflater.inflate(…)方法并传入布局的资源ID生成的。第二个参数是视图的父视图,通常我们需要父视图来正确配置组件。第三个参数告知布局是否将生成的视图添加给父视图。这里,我们传入了false参数,因为我们将通过Activity代码的方式添加视图。
package com.example.fragmentdemo;import android.content.Intent;import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.Button;public class MyFragment extends Fragment {private Button mButton;@Overridepublic void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stubView v = inflater.inflate(R.layout.fragment, container,false);mButton=(Button) v.findViewById(R.id.button1);/*mButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubIntent i=new Intent();i.setClass(getActivity(), MyActivity.class);getActivity().startActivity(i);}});*/return v;//return super.onCreateView(inflater, container, savedInstanceState);}}
4、 在Activity中添加UI fragment到FragmentManager(MainActivity.java)
MainActivity继承FragmentActivity类,由getSupportFragmentManager()获得FragmentManager对象。或者不考虑版本兼容问题,也可以直接继承Activity并由getFragmentManager()获得FragmentManager对象。
FragmentManager类负责管理fragment并将它们的视图添加到Activity的视图层级结构中。具体管理fragment队列和fragment事务的回退栈。具体操作如下:
Fragment使用容器视图资源ID向FragmentManager获取fragment实例。如果获取的fragment在队列中存在,FragmentManager随即会将之返还。如果不存在,则Fragment获取不到fragment实例,fragment为null。那么由FragmentManager通过调用beginTransaction方法开启一个事务。使用add(…)方法实现向队列内加入fragment,add(…)方法需要传入容器视图资源ID和fragment的实例。最后调用commit()方法提交事务。
package com.example.fragmentdemo;import android.os.Bundle;import android.support.v4.app.FragmentActivity;import android.support.v4.app.FragmentManager;public class MainActivity extends FragmentActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);FragmentManager fm = getSupportFragmentManager();android.support.v4.app.Fragment fragment= fm.findFragmentById(R.id.fragmentContainer);if (fragment==null) {fragment = new MyFragment();fm.beginTransaction().add(R.id.fragmentContainer, fragment).commit();}} }
5、 Fragment生命周期
a) 创建的流程
(Fragment) onAttach() : Fragment和Activity建立关联
(Activity) onCreate() :
(Fragment) onCreateView(): 为Fragment加载布局
(Fragment) onActivityCreated()
b) 销毁的流程
(Activity) onResume()
(Activity) onPause()
(Activity) onStop()
(Fragment) onDestroyView(): Fragment中的布局被移除
(Activity) onDestroy()
(Fragment) onDetach(): Fragment和Activity解除关联
请支持原创,尊重原创,转载请注明出处:http://blog.csdn.net/kangweijian(来自kangweijian的csdn博客)
《Android编程权威指南》之学习心得与笔记 by 2015.1.20
- Android碎片化 UI fragment
- Android~Fragment~碎片化知识点
- Fragment android碎片化管理
- 跟我学Android UI高级之十五碎片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之Fragment 碎片
- Android-Fragment碎片-片段
- Quick-Cocos2d-x CCHttpRequest详细说明及用法
- 为Jekyll博客添加RSS feed订阅功能
- PIC 里面关于 __CONFIG( ) 配置位
- UISearchBar基本用法及searchBar常用代理方法
- ZOJ Problem Set - 2812 Quicksum
- Android碎片化 UI fragment
- DES加密解密算法
- 一些获得外链的小技巧
- ndoutils2.2.0(ndo2db)中文乱码问题解决
- Android 判断当前设备是手机还是平板
- U-Boot命令大全(功能参数及用法)
- Appium 已支持中文输入(Appium 1.3.3以上)
- 小说“三层”
- js中parseInt()与parseFloat(),Number(),Boolean(),String()转换