Android开发笔记(10)——使用Fragment传递
由于最近废寝忘食地在开发App,没来得及及时做总结,没有用很高级的部件,勉强也使用一些功能完成了自己的第一个App,撒花~~~
接下来都是自己在开发中使用后的一些经验,也是和他人学习实践后的成果,主要是关于Fragment。
/* 添加Fragment有静态添加 & 动态添加两种方式
* 静态是在Layout布局中添加<Fragment>控件
* 由于可以设置id,则可通过id寻找
*/
<Fragment
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fragment1"/>
/* 动态添加fragment则完全在程序中定义添加
* 添加同时设定TAG,通过TAG寻找实例(见后Transaction)
*/
// 对activity中的Fragment进行管理,需要通过Fragment Manager
FragmentManager manager = getFragmentManager();
manager.findFragmentById(); //根据ID查找
manager.findFragmentByTag();//根据TAG查找
manager.getFragments();//获取所有被ADD进Activity中的Fragment
/*对当前的Fragment进行管理,使用FragmentTransaction
*Transcation则控制Fragment的显示、添加、替换等等,如add/remove/replace
*commit()对操作的Fragemnt提交到系统,进行显示
*/replace(R.id.content_frame,fragment).commit(); //替换——删除添加操作add(R.id.container,fragment1,String tag); //添加fragment,并设置动态查找TAGremove(fragment1); //删除
/* 故而Fragment常被用于导航栏的切换内容
* 每点击导航栏不同图标,系统便调用响应的Fragment布局和内容,较为方便==========================================================================================================
* Activity或Fragment向Fragment之间的参数传递*/
Bundle args = new Bundle();
args.put("value_key",value);
//value_key是在传输读取中约定的关键词
//传输值可以为多种类型,int,String,Array等等
Fragment fragment = new Fragment();
fragment.setArguments(args); //将bundle传给fragment
//fragment读取值
red = getArguments().getInt("value_key1");
yellow = getArguments().getString("value_key2");
//==========================================================================================================
//当需要从Fragment返回原活动时,需要设置fragment连接
aheadDialogue.setTargetFragment(CompetitionFragment.this,REQUEST_CODE);
getFragmentManager().beginTransaction().replace(R.id.content_frame, fragment1).addToBackStack(null).commit();
getFragmentManager().popBackStack(); //返回
//原Fragment接收返回值,在onActivityResult进行定义
//request_code是用户自定义integer
//resultCode通常是活动状况,是否正常结束
public void onActivityResult(int requestCode, int resultCode, Intent data) {
// super.onActivityResult(requestCode, resultCode, data);
// 可判断不同requestCode接受不同返回值操作
if (requestCode==0x1001) {
if (resultCode != Activity.RESULT_OK) { //这里再对activity状态进行判断
return;
} else {
hitPlayer = data.getStringExtra("hitplayer");
hitNumber = data.getIntExtra("hitnumber", 0);
}
}
if (requestCode==0x1111) {
//blablabla
}
} 推荐介绍Fragment挺详细的blog:http://blog.csdn.net/harvic880925/article/details/44927375
本笔记内容均为个人学习整理,转载请注明安科开发-igoslly
相关推荐
韩伟佳 2020-10-09
wuleihenbang 2020-09-16
zzqLivecn 2020-07-09
chenjinlong 2020-06-10
yinbaoshiguang 2020-06-09
sgafdsg 2020-06-04
ustcrding 2020-06-03
chenjinlong 2020-06-03
AndroidGA 2020-06-01
安辉 2020-05-27
绿豆饼 2020-05-26
CNETNews 2020-05-26
xilove0 2020-05-12
绿豆饼 2020-05-12
ChainDestiny 2020-05-07
doomvsjing 2020-05-07
hqulyc 2020-05-05
lyccsu 2020-04-30