fragment的创建和通信
来源:互联网 发布:qq机器人源码 编辑:程序博客网 时间:2024/06/07 02:36
一、创建fragment有两种方法
1、在activity的layout文件中定义
下面是activity的布局文件,其中有两个fragment,当系统加载activity的布局文件的时候,会自动根据android:name这个属性找到所在的Fragment类,
当执行createView的时候会自动加载改Fragment的布局控件,这两个的Fragment的执行顺序是由上而下的,生命周期见fragment的生命周期
<?xml><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
> android:layout_width="match_parent"
> <fragment android:name="com.example.news.ArticleListFragment"
> android:layout_weight="1"
> > <fragment> android:id="@+id/viewer"
> > ></LinearLayout>
android:name这个属性的值是要运行的fragment所在的包名加类名
2、在代码中添加到现有的ViewGroup
为了在activity中使用fragment transactions(如添加、删除或替换fragment)
FragmentManager>FragmentTransaction>
使用add()方法
ExampleFragment>fragmentTransaction.add(R.id.fragment_container, fragment);
transaction.addToBackStack(null);
fragmentTransaction.commit();
也可以添加一个没有UI的fragment
二、管理fragment
使用fragmentManager管理,在activity中调用getFragmentManager()得到fragmentMannager的对象
一般用fragmenteManager的操作有:
*在已经存在的Activity中得到Fragments,通过findFragmentById(在activity的layout文件中提供fragment的UI)或者通过findViewByTag()(为fragment提供或不提供UI)
*返回栈弹出fragment用popBackStack(由用户返回模拟指令)
*注册监听器来更改返回栈,用addOnBackStackChangeListener()
三、frament的通信
首先在fragment中定义一个接口,然后在activity中实现它。在fragment的onAttach回调函数中获取接口的具体对象方法,如下:
@Override
public void onAttach(Activity activity) {
super.onAttach(activity); // 这是为了保证Activity容器实现了用以回调的接口。如果没有,它会抛出一个异常。
try {
mCallback = (OnHeadlineSelectedListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()+ " must implement OnHeadlineSelectedListener");
}
}
现在fragment可以通过使用实现了OnHeadlineSelectedListener接口的mCallback实例调用onArticleSelected()方法(或其他在接口中的方法)将消息传递给Activity。
例如下面在fragment中的方法将会在用户点击一个List item的时候被调用。这个fragment使用回调接口将时间传递给父Activtity。
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
// 发送时间给Activity宿主
mCallback.onArticleSelected(position);
}
实现接口
为了接收从fragment传递过来的事件回调,宿主Activity必须实现定义在fragment类中的接口。如下:
public static class MainActivity extends Activity implements HeadlinesFragment.OnHeadlineSelectedListener{
public void onArticleSelected(int position) {
// 用户选中HeadlinesFragment中的头标题后
// 做一些必要的业务操作
ArticleFragment> getSupportFragmentManager().findFragmentById(R.id.article_fragment);
if (articleFrag != null) { // 如果 article frag 不为空,那么我们在同时显示两个fragmnet的布局中...
// 调用ArticleFragment中的方法去更新它的内容
articleFrag.updateArticleView(position);
} else { // 否则,我们就是在仅包含一个fragment的布局中并需要交换fragment...
// 创建fragment并给他一个跟选中的文章有关的参数
ArticleFragment> Bundle> args.putInt(ArticleFragment.ARG_POSITION, position);
newFragment.setArguments(args);
FragmentTransaction> // 并添加事务到back stack中以便用户可以回退到之前的状态
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null); // 提交事务
transaction.commit();
}
}
}
1、在activity的layout文件中定义
下面是activity的布局文件,其中有两个fragment,当系统加载activity的布局文件的时候,会自动根据android:name这个属性找到所在的Fragment类,
当执行createView的时候会自动加载改Fragment的布局控件,这两个的Fragment的执行顺序是由上而下的,生命周期见fragment的生命周期
<?xml><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
> android:layout_width="match_parent"
> <fragment android:name="com.example.news.ArticleListFragment"
> android:layout_weight="1"
> > <fragment> android:id="@+id/viewer"
> > ></LinearLayout>
android:name这个属性的值是要运行的fragment所在的包名加类名
2、在代码中添加到现有的ViewGroup
为了在activity中使用fragment transactions(如添加、删除或替换fragment)
FragmentManager>FragmentTransaction>
使用add()方法
ExampleFragment>fragmentTransaction.add(R.id.fragment_container, fragment);
transaction.addToBackStack(null);
fragmentTransaction.commit();
也可以添加一个没有UI的fragment
二、管理fragment
使用fragmentManager管理,在activity中调用getFragmentManager()得到fragmentMannager的对象
一般用fragmenteManager的操作有:
*在已经存在的Activity中得到Fragments,通过findFragmentById(在activity的layout文件中提供fragment的UI)或者通过findViewByTag()(为fragment提供或不提供UI)
*返回栈弹出fragment用popBackStack(由用户返回模拟指令)
*注册监听器来更改返回栈,用addOnBackStackChangeListener()
三、frament的通信
首先在fragment中定义一个接口,然后在activity中实现它。在fragment的onAttach回调函数中获取接口的具体对象方法,如下:
@Override
public void onAttach(Activity activity) {
super.onAttach(activity); // 这是为了保证Activity容器实现了用以回调的接口。如果没有,它会抛出一个异常。
try {
mCallback = (OnHeadlineSelectedListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()+ " must implement OnHeadlineSelectedListener");
}
}
现在fragment可以通过使用实现了OnHeadlineSelectedListener接口的mCallback实例调用onArticleSelected()方法(或其他在接口中的方法)将消息传递给Activity。
例如下面在fragment中的方法将会在用户点击一个List item的时候被调用。这个fragment使用回调接口将时间传递给父Activtity。
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
// 发送时间给Activity宿主
mCallback.onArticleSelected(position);
}
实现接口
为了接收从fragment传递过来的事件回调,宿主Activity必须实现定义在fragment类中的接口。如下:
public static class MainActivity extends Activity implements HeadlinesFragment.OnHeadlineSelectedListener{
public void onArticleSelected(int position) {
// 用户选中HeadlinesFragment中的头标题后
// 做一些必要的业务操作
ArticleFragment> getSupportFragmentManager().findFragmentById(R.id.article_fragment);
if (articleFrag != null) { // 如果 article frag 不为空,那么我们在同时显示两个fragmnet的布局中...
// 调用ArticleFragment中的方法去更新它的内容
articleFrag.updateArticleView(position);
} else { // 否则,我们就是在仅包含一个fragment的布局中并需要交换fragment...
// 创建fragment并给他一个跟选中的文章有关的参数
ArticleFragment> Bundle> args.putInt(ArticleFragment.ARG_POSITION, position);
newFragment.setArguments(args);
FragmentTransaction> // 并添加事务到back stack中以便用户可以回退到之前的状态
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null); // 提交事务
transaction.commit();
}
}
}
0 0
- fragment的创建和通信
- activity和fragment的通信
- 利用Fragment创建动态UI 之 Fragment之间的通信
- Android -- fragment, 动态创建,创建选项卡,静态创建,fragment之间的通信
- Fragment和Activity之间的相互通信
- Activity和Fragment之前的通信
- 关于activity和fragment的通信
- Fragment和Activity之间的相互通信
- Activity和Fragment之间的通信
- Fragment和Activity之间的通信
- Fragment和Activity之间的通信
- Android中的Fragment ---- 04(Activity和Fragment之间的通信)
- Android中的Fragment ---- 05(Activity和Fragment之间的通信)
- 动态加载fragment和实现fragment 之间的通信
- Activity和Fragment的三种通信以及EventBus通信
- fragment和activity通信
- Activity和Fragment通信
- fragment及fragment的通信
- 如何“一键安装”‘X5Cloud云端应用?
- android 一些路径的标准写法
- linux动态磁盘lvm配置的方法
- HTTP协议
- direct path read[不错]
- fragment的创建和通信
- jQuery TreeGrid
- 【Android】配置APK开发环境
- HTML中的URL编码规则
- Spring与Struts1整合的三种方法总结
- Parse-轻松构建移动APP的后台服务
- HTML5实战与剖析之CSS选择器——getElementsByClassName()方法
- 【玩转cocos2d-x之一】V2.2.0版本开发环境配置
- getopts的用法