android基础之fragment学习
2013-06-01 10:33
435 查看
fragment是嵌在activity内部的模块,其有自己的生命周期,但其生命周期必须依赖于activity的存在而存在,在API 11之前每个fragment必须与父FragmentActivity相关联,API 11之后就可以通过activity实现这种关联。在activity中嵌入fragment有两种方式,一种是通过在xml文件中如下声明,
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment android:name="com.example.android.fragments.HeadlinesFragment"
android:id="@+id/headlines_fragment"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" />
<fragment android:name="com.example.android.fragments.ArticleFragment"
android:id="@+id/article_fragment"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="match_parent" />
</LinearLayout>
<p>此种定义的fragmnet不可以在activity运行时remove掉,一般用于大屏幕的布局。</p><p>另一种可以定义一个存储fragment的容器,比如</p>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
ArticleFragment newFragment = new ArticleFragment();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack so the user can navigate back
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();
示例代码链接:点击打开链接
fragment是嵌在activity内部的模块,其有自己的生命周期,但其生命周期必须依赖于activity的存在而存在,在API 11之前每个fragment必须与父FragmentActivity相关联,API 11之后就可以通过activity实现这种关联。在activity中嵌入fragment有两种方式,一种是通过在xml文件中如下声明,
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment android:name="com.example.android.fragments.HeadlinesFragment"
android:id="@+id/headlines_fragment"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" />
<fragment android:name="com.example.android.fragments.ArticleFragment"
android:id="@+id/article_fragment"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="match_parent" />
</LinearLayout>
[java] view plaincopy
<p>此种定义的fragmnet不可以在activity运行时remove掉,一般用于大屏幕的布局。</p><p>另一种可以定义一个存储fragment的容器,比如</p>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
ArticleFragment newFragment = new ArticleFragment();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack so the user can navigate back
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();
示例代码链接:http://download.csdn.net/detail/u010095768/5493793
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment android:name="com.example.android.fragments.HeadlinesFragment"
android:id="@+id/headlines_fragment"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" />
<fragment android:name="com.example.android.fragments.ArticleFragment"
android:id="@+id/article_fragment"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="match_parent" />
</LinearLayout>
<p>此种定义的fragmnet不可以在activity运行时remove掉,一般用于大屏幕的布局。</p><p>另一种可以定义一个存储fragment的容器,比如</p>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
此种定义的fragment可以实现在activity中实现add和remove等操作,但需注意的是此种必须在activity的oncreate方法中初始化fragment.如下
ArticleFragment newFragment = new ArticleFragment();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack so the user can navigate back
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();
对于fragment的操作,是通过FragmnetTransaction实现的。首先通过getSupportedFragmentManager得到FragmentManagerusing Support Library APIs,然后调用beginTransaction得到FragmentTransaction.
注意,你可以执行多种fragment的操作用同一个fragmentTransaction,当执行完所有的操作后fragmentTransaction执行commit操作来保存对于fragment执行的各种操作。
当对fragment执行完removve操作后如果需要回到之前的fragment,需要在执行完remove操作后执行addToBackStack(String name);该方法中的string参数来给每个transaction一个唯一的标示,如果不想为其起名字可以addToBackStack(null).
fragment间的数据传递可以通过Bundle实现。语法如下fragment.setArgments(bundle);得到传递的bundle,Bundle bundle=getArgments();
示例代码链接:点击打开链接
fragment是嵌在activity内部的模块,其有自己的生命周期,但其生命周期必须依赖于activity的存在而存在,在API 11之前每个fragment必须与父FragmentActivity相关联,API 11之后就可以通过activity实现这种关联。在activity中嵌入fragment有两种方式,一种是通过在xml文件中如下声明,
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment android:name="com.example.android.fragments.HeadlinesFragment"
android:id="@+id/headlines_fragment"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" />
<fragment android:name="com.example.android.fragments.ArticleFragment"
android:id="@+id/article_fragment"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="match_parent" />
</LinearLayout>
[java] view plaincopy
<p>此种定义的fragmnet不可以在activity运行时remove掉,一般用于大屏幕的布局。</p><p>另一种可以定义一个存储fragment的容器,比如</p>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
此种定义的fragment可以实现在activity中实现add和remove等操作,但需注意的是此种必须在activity的oncreate方法中初始化fragment.如下
ArticleFragment newFragment = new ArticleFragment();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack so the user can navigate back
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();
对于fragment的操作,是通过FragmnetTransaction实现的。首先通过getSupportedFragmentManager得到FragmentManagerusing Support Library APIs,然后调用beginTransaction得到FragmentTransaction.
注意,你可以执行多种fragment的操作用同一个fragmentTransaction,当执行完所有的操作后fragmentTransaction执行commit操作来保存对于fragment执行的各种操作。
当对fragment执行完removve操作后如果需要回到之前的fragment,需要在执行完remove操作后执行addToBackStack(String name);该方法中的string参数来给每个transaction一个唯一的标示,如果不想为其起名字可以addToBackStack(null).
fragment间的数据传递可以通过Bundle实现。语法如下fragment.setArgments(bundle);得到传递的bundle,Bundle bundle=getArgments();
示例代码链接:http://download.csdn.net/detail/u010095768/5493793
相关文章推荐
- android基础学习之fragment+viewpager+fragment事件听
- android基础之fragment的学习
- Android基础_学习Fragment时候出现的一些错误[博客园]
- Android基础部分再学习---全面理解Fragment
- android基础学习-Fragment和eclipse快捷键
- android基础学习之Fragment
- Android学习第十二篇——Fragment基础学习
- Android基础学习之Fragment(碎片)
- 我的Android学习.入门小基础(一)
- Android Fragment基础介绍
- Android基础学习__第7天__图片的各种处理
- android基础部分再学习---再谈Service进程服务通信
- Android Fragment 基础初识(上)
- 【Android Fragment相关】Fragment基础知识总结
- 8天快速掌握Android视频(完整版--适合有JavaWeb基础学习)
- android基础学习之二维码扫描基本功能
- android基础学习之mediaplayer基本方法关系
- 零基础学习在Android进行SDL开发后记
- android基础知识——Fragment
- Android学习篇章30-Broadcast广播基础-自定义广播(动态广播)