Fragment功能与Activity相似,但Activity只能全屏显示,Fragment可占据任意大小屏幕,适于平板中的分屏模式。
一个fragment必须总是嵌入在一个activity中,同时fragment的生命周期受activity而影响。
fragment添加方式有两种:
一种是在布局文件中添加;
<LinearLayout >
...
<fragment android:name="com.xx.xxFragment"
android:id="@+id/xx_frag"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
...
</LinearLayout>
另一种是在代码中动态添加,如下面示例。动态添加的好处是易于用新的fragment替换。
1.HomeFragment
2.PopupActivity: 宿主Activity
3.popup.xml:PopupActivity对应布局文件
4.popup_home.xml:homeFragment对应布局文件
popup.xml
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pop"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
<FrameLayout
android:id="@+id/right_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_toRightOf="@+id/xx">
</FrameLayout>
</LinearLayout>
PopupActivity
public class PopupActivity extends Activity {
private static final String TAG = "PopupActivity";
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.popup);
Debug.debug(TAG, "onCreate()");
//...一些初始化试图操作
//add fragment
FragmentTransaction ft = getFragmentManager().beginTransaction();
mHomeFragment = new HomeFragment();
ft.add(R.id.right_layout, mHomeFragment, HomeFragment.TAG);
//ft.addToBackStack(null); //调用addToBackStack按后退键时只消失fragment,否则退出activity
ft.commit();
}
//...
}
HomeFragment
/**
*
* Fragment生命周期 onAttach() -> onCreate() -> onCreateView() -> onActivityCreated() -> onResume()
* onPause() -> onDestroyView() -> onDestroy()
*
* resume时 : onCreateView() -> onActivityCreated() -> onResume()
*/
public class HomeFragment extends BaseFragment{
public static final String TAG = "HomeFragment";
@Override
public void onAttach(Activity activity){
super.onAttach(activity);
Log.i(TAG, "onAttach():"+activity.getLocalClassName());
}
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
Debug.debug(TAG, "onCreate()");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState){
Debug.debug(TAG, "onCreateView()");
View root = inflater.inflate(R.layout.popup_home, null);
//...初始化视图initView(root);
return root;
}
@Override
public void onActivityCreated(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
Debug.debug(TAG, "onActivityCreated()");
}
@Override
public void onResume(){
Debug.debug(TAG, "onResume()");
super.onResume();
}
@Override
public void onPause(){
Debug.debug(TAG, "onPause()");
super.onPause();
}
@Override
public void onDestroyView(){
super.onDestroyView();
Debug.debug(TAG, "onDestroyView()");
}
@Override
public void onDestroy(){
super.onDestroy();
Debug.debug(TAG, "onDestroy()");
}
}
当想用新的fragment替换掉上面HomeFragment显示时
NewFragment newFragment = new NewFragment();
//传递参数
Bundle args = new Bundle();
//args.put数据
newFragment.setArgument(args);
FragmentTransaction ft = activity.getFragmentManager().beginTransaction();
ft.replace(R.id.right_layout, newFragment, "newFragment.TAG");
ft.addToBackStack(null);
ft.commit();
分享到:
相关推荐
二、Android Fragment 示例讲解一 2.1 创建 Fragment 2.2 Fragment 管理 2.3 Fragment 与 Activity 通讯 2.4 Fragment 示例 三、Android Fragment 示例讲解二 3.1 项目的效果图 3.2 项目结构图与内容分析...
二、Android Fragment示例讲解一 2.1 创建Fragment 2.2 Fragment 管理 2.3 Fragment 与Activity 通讯 2.4 Fragment 示例 三、Android Fragment示例讲解二 3.1 项目的效果图 3.2 项目结构图与内容分析 3.4 ...
Android Fragment使用示例
Android fragment示例,几乎涵盖Android fragment常常使用,需要注意的点。
Android_FragmentExample- Android Fragment示例静态和动态
Fragment是Android honeycomb 3.0新增的概念,在如何使用Android Fragment中做了关于Fragment的详细介绍。本文则主要是通过实例的方式让大家更直观的了解Fragment的使用方法。 首先贴上实例的运行效果截图: ...
谷歌官方示例,training中关于fragment的基础介绍,实现的是依据屏幕的大小显示不同的fragment:小屏幕同时只显示一个fragment;大屏幕两个一同显示。原版为esclipe版本的project,已转换为AS可用的,target version...
android Fragment回退栈实践
android fragment使用示例 ,很好的学习示例,希望帮到学习中的人。
android-fragment-demo 演示片段在Android中的简单应用
使用android studio 创建的 BottomNavigationView 示例, 注意使用IDE创建fragment后, 需要注释掉一些默认添加的代码;
Fragment和FragmentActivity将在Android后面的版本使用的越来越频繁,这个案例中使用Fragment实现Tab键的转换
在android4.0中,新增了Fragment的使用,与activity类似,但是集成在activity中。 本实例演示了Fragment的静态和动态加载,以及Fragment在切换时的动画裂变效果。 源码上传,下载后直接运行。 GoodLuck!
根据网络示例代码汇总的android 初级fragment 碎片编程代码,内有详细注释
一个接单的示例 Fragment的动态添加
主要介绍了Android Fragment的回退栈示例详细介绍的相关资料,需要的朋友可以参考下
主要介绍了android实现滑动关闭fragment示例,需要的朋友可以参考下
对Fragment静态使用的简单示例,配合博客说明:http://blog.csdn.net/swaytop
此为示例代码,详细讲解请参考: http://blog.csdn.net/guolin_blog/article/details/13171191 如对资源内容有疑问,请到博客里留言。