脚本之家 服务器常用软件
微信 投稿 交流社区 在线工具

Android中Activity和Fragment传递数据的两种方式

转载  发布时间:2017年09月04日 14:27:25   作者:Gimi丶   我要评论

本篇文章主要介绍了Android中Activity和Fragment传递数据的两种方式,非常具有实用价值,需要的朋友可以参考下

1、第一种方式,也是最常用的方式,就是使用Bundle来传递参数

 MyFragment myFragment = new MyFragment();
    Bundle bundle = new Bundle();
    bundle.putString("DATA",values);//这里的values就是我们要传的值
    myFragment.setArguments(bundle);

然后在Fragment中的onCreatView方法中,通过getArgments()方法,获取到bundle对象,然后通过getString的key值拿到我们传递过来的值。

2、第二种方式,是在宿主Activity中定义方法,将要传递的值传递到Fragment中,在Fragment中的onAttach方法中,获取到这个值。

//宿主activity中的getTitles()方法
public String getTitles(){
  return "hello";
}

//Fragment中的onAttach方法
  @Override
  public void onAttach(Activity activity) {
    super.onAttach(activity);
    titles = ((MainActivity) activity).getTitles();
  }
//通过强转成宿主activity,就可以获取到传递过来的数据

3、下面在扩展一下创建Fragment和传递数值

如果我们不需要传递数值,那就直接可以在宿主activity中,跟平常一样创建fragment,但是如果我们需要传递数据的话,可以使用newInstance(数据)方法来传递,这个方法是自己定义的,但是是定义在Fragment中的一个静态方法。

static MyFragment newInstance(String s){
    MyFragment myFragment = new MyFragment();
    Bundle bundle = new Bundle();
    bundle.putString("DATA",s);
    myFragment.setArguments(bundle);
    return myFragment;
  }

//同样,在onCreatView中直接获取这个值
 @Nullable
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.layout_fragment,container,false);
    Bundle bundle = getArguments();
    String data = bundle.getString("DATA");
    tv = (TextView) view.findViewById(R.id.id_fm_tv);
    if(data != null){
      tv.setText(data);
    }
    return view;
  }

在宿主activity中,创建Fragment

FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.setCustomAnimations(android.R.anim.fade_in,android.R.anim.fade_out);
    fragment1 = MyFragment.newInstance("这是第一个fragment");//这里只需要直接调用这个方法,就创建了一个fragment
    fragment2 = MyFragment.newInstance("这是第二个fragment");
    fragment3 = MyFragment.newInstance("这是第三个fragment");

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • Fragment
  • Activity

相关文章

  • Android动态控制状态栏显示和隐藏

    这篇文章主要介绍了Android动态控制状态栏显示和隐藏,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Android开发教程之shape和selector的结合使用

    shape和selector是Android UI设计中经常用到的,比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到shape和selector,接下来通过本文给大家介绍Android开发教程之shape和selector的结合使用,感兴趣的朋友一起学习吧
    2016-01-01
  • Android自定义DigitalClock控件实现商品倒计时

    这篇文章主要为大家详细介绍了Android DigitalClock实现商品倒计时,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • Android自定义View实现多片叶子旋转滑动(五)

    这篇文章主要为大家详细介绍了Android自定义View实现多片叶子叶子旋转滑动,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • Android中微信抢红包助手的实现详解

    本篇文章主要介绍了Android中微信抢红包助手的实现详解,通过利用AccessibilityService辅助服务,监测屏幕内容,如监听状态栏的信息,屏幕跳转等,以此来实现自动拆红包的功能,有兴趣的可以了解一下。
    2017-02-02
  • SimpleCommand框架ImageLoader API详解(三)

    这篇文章主要为大家详细介绍了SimpleCommand框架ImageLoader API,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • Android编程实现播放音频的方法示例

    这篇文章主要介绍了Android编程实现播放音频的方法,结合实例形式分析了Android使用MediaPlayer类播放音频的相关操作技巧,需要的朋友可以参考下
    2017-08-08
  • Android仿微信底部菜单栏效果

    这篇文章主要为大家详细介绍了Android仿微信底部菜单栏效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Android实现自定义轮播图片控件详解

    这篇文章给大家主要介绍了Android实现自定义轮播图片控件的详细过程,文中通过实例代码介绍的很详细,相信会对大家的理解和学习很有帮助,感兴趣的朋友们下面来一起看看吧。
    2016-10-10
  • Android SQLite数据库版本升级的管理实现

    这篇文章主要介绍了Android SQLite数据库版本升级的管理实现的相关资料,这里提供实现代码帮助大家掌握这部分内容,需要的朋友可以参考下
    2017-09-09

最新评论