zoukankan      html  css  js  c++  java
  • Android开发笔记(10)——使用Fragment传递

    转载请注明:http://www.cnblogs.com/igoslly/p/6911165.html

     

    由于最近废寝忘食地在开发App,没来得及及时做总结,没有用很高级的部件,勉强也使用一些功能完成了自己的第一个App,撒花~~~

    接下来都是自己在开发中使用后的一些经验,也是和他人学习实践后的成果,主要是关于Fragment。

     

     

    使用Fragment传递

    添加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 Manager & Transaction

    FragmentManager
    ,获取当前Activity的所有Fragment,形成fragment栈
    FragmentTransaction,则可以管理当前的Fragment Transcation 控制 Fragment 的显示、添加、替换等等,如 add / remove / replace commit() 对操作的 Fragemnt 提交到系统,进行显示
    replace(R.id.content_frame,fragment).commit();  //替换——删除添加操作
    add(R.id.container,fragment1,String tag);    //添加fragment,并设置动态查找TAG
    remove(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

  • 相关阅读:
    用css实现三角形
    css实现加载中的效果
    图片轮播图插件
    支付密码框
    angular里面ng-class的几个用法
    Redis数据恢复
    Jenkins简单介绍
    spring框架中定时器的配置及应用
    springMVC与freemarker的整合
    freemarker入门小例子
  • 原文地址:https://www.cnblogs.com/igoslly/p/6911165.html
Copyright © 2011-2022 走看看