初学android开发--Fragment



Fragment(碎片)

Fragment的创建

1、自定义类继承Fragment

2、复写onCreateView方法,返回view对象

3、在Activity中添加显示此自定义Fragment

public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState)

@param inflater 布局填充器,使用它可以动态填充xml布局文件,并返回View对象

@param container Fragment被包含的ViewGroup对象,Fragment的父布局

@param Bundle 通过Bundle对象可以实现现场保护功能

Fragment的显示

#静态显示

1、xml布局文件中使用<fragment>标签,声明需要显示的Fragment

2、一定要添加id/tag,通过这个id/tag,可以用FragmentManager找到此Fragment

3、指定name属性,它指向Fragment的绝对路径

#动态显示

1、xml布局文件中,创建Fragment的占位布局,通常使用FrameLayout

2、java代码中,获取FragmentManager

3、通过FragmentManager获取FragmentTransaction

FragmentManager manager=getFragmentManager();

FragmentTransaction transaction=manager.beginTransaction();

4、通过FragmentTransaction可以对Fragment进行一系列操作

5、调用FragmentTransaction.commit()提交事务

Fragment与Activity之间的传值

Activity->Fragment 

1、通过Fragment.setArgument可以向被添加Fragment对象中存储相应的数据

2、初始化Bundle对象,并传入数据

3、将bundle传给Fragment对象

<span style="font-size:14px;"><span style="white-space: pre;">		</span>FragmentManager manager = getFragmentManager();
		
		FragmentTransaction transaction = manager.beginTransaction();
		
		//通过Fragment.setArgument可以向被添加Fragment对象中存储相应的数据
		FragmentContent fragmentContent = new FragmentContent();
		//初始化Bundle对象,并传入数据
		Bundle bundle = new Bundle();
		bundle.putString("key", "这是从MainActivity中传进来的数据");
		//将bundle传给Fragment对象
		fragmentContent.setArguments(bundle);
		
		transaction.add(R.id.containerId, fragmentContent);
		
		transaction.commit();</span><span style="font-size: 14px;">
</span>
4、在自定义Fragment类中,通过bundle=getArguments()取出bundle

Fragment->Activity

使用接口回调传值的方法,步骤:

1、在Fragment中创建公共接口类,并创建此接口类的全局变量,例如

private ItemClickCallback itemClickCallback;

public interface ItemClickCallback{

public void onItemClickCalled();

}

2、创建setInterface方法

public void setItemClickCallback(ItemClickCallback itemClickCallback){

this.itemClickCallback=itemClickCallback;

}

3、在宿主Activity中实现此接口,并实现抽象方法

4、宿主Activity显示Fragment时,通过setItemClickCallback将Activity本身传入Fragment中的itemClickCallback

需要判断宿主Activity是否已经实现内部接口

Activity activity=getActivity();

if(activity instanceof ItemClickCallback){

setItemClickCallback((ItemClickCallback)activity);

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值