`
scarlettli
  • 浏览: 57531 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Activity与Fragment之间传递参数

阅读更多
      在Activity中加载Fragment的时候需要传值到另Fragment,也就是说Activityg与Fragment之间进行参数的传递,可以使用bundle进行参数传递,看代码:
      在activity中获取fragment中的数据
     
public class SaleQuoteActivity extends BaseActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.other_main);
        //在activity中获取相对应的fragment中的数据
        getSupportFragmentManager().beginTransaction().replace(R.id.detail_contain, SaleQuoteFragmentV2.newInstance(getIntent().getStringExtra(ConstantsRoseFashion.KEY_P_ID))).commit();
    }

    //@DebugLog
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
    }
}

      在上面的代码中我们看到了activity在获取fragment中的数据时调用了fragment的newInstance()这个方法,那么下面我们来看看在这个方法中我们做了哪些事情呢
     
public static SaleQuoteFragmentV2 newInstance(String pid) {
        //通过Bundle保存数据
        Bundle args = new Bundle();
        args.putString(ConstantsRoseFashion.KEY_P_ID, pid);
        SaleQuoteFragmentV2 fragment = new SaleQuoteFragmentV2();
        //将Bundle设置为fragment的参数
        fragment.setArguments(args);
        return fragment;
    }

      从这个方法中我们可以看到在Fragment中我们把需要传递的数据通过Bundle保存起来并且将这个Bundle设置成Fragment的参数,然后将这个Fragment对象返回,这样我们在Activity中就通过newInstance()这个方法取到了Fragment对象。

      上面讲了怎样将Fragment中的数据传递到Activity当中,下面来看一下在Fragment中是如何取到从Activity中传递过来的数据的,其实非常的简单,看下面的码:
     
String pid = getArguments().getString(ConstantsRoseFashion.KEY_P_ID);

      就这么一句话就可以了,非常简单吧!


      上面说的都是传递的基本数据类型的数据,那么怎么传递一个Java Bean对象呢?
      接着看下面的代码吧:
     
Intent intent = new Intent(context, GlobalPriceActivity.class);
        intent.putExtra(ConstantsRoseFashion.KEY_DATA, data != null ? new Gson().toJson(data) : null);
        context.startActivity(intent);

      在这里我是通过Gson将这个Java Bean转换成一个gson字符串传递到Activity中的,然后从Activity传递到Fragment中,这个上面说过了在这里就不重复了,下面看看我们在Fragment中是如何将这个gson字符串转成一个Java Bean的
     
String json = getArguments().getString(ConstantsRoseFashion.KEY_DATA);
        singleGoods = new Gson().fromJson(json, SingleGoods.class);

      当然在转换前要定义好这个Java Bean,这个我就不多说了,大家可以自己去试试。
分享到:
评论
1 楼 wm8868 2016-08-21  
好,简单实用

相关推荐

    Fragment与Activity使用Bundle传递数据

    2. **设置Intent或Arguments**:如果从Activity到Fragment传递数据,需要在创建Fragment实例时将Bundle作为参数传递给Fragment的构造函数,或者调用`setArguments(Bundle)`方法。如果是Activity间的跳转,将Bundle...

    Fragment与Activity传递数据

    3. **在Activity中获取数据**:在Activity中,通过getArguments()方法获取Fragment传递过来的Bundle,然后从中取出数据。 示例代码: ```java // 在Activity中创建Fragment并传递数据 MyFragment fragment = new ...

    Fragment与Activity 之间的数据传输

    - **通过Intent传递数据**:虽然Intent主要用于Activity之间的数据传递,但在启动Fragment时,我们也可以将数据通过Intent Bundle传递给Fragment,但这需要在Activity中手动将数据传递给Fragment的实例。 - **通过...

    fragment activity与fragment相互传值 fragment与fragment跳转

    本示例主要关注两个核心知识点:Fragment与Activity之间的数据传递,以及Fragment之间的跳转。 首先,我们来探讨Fragment与Activity之间的数据传递。在Android中,有多种方式实现两者间的数据交换: 1. **通过...

    Activity和Fragment之间相互传值和调用方法

    首先,我们来看Activity向Fragment传递值的方法。这通常通过在创建Fragment时使用构造函数、setArguments()方法或者使用接口来实现。当我们在一个Activity中实例化Fragment时,可以创建一个Bundle对象,然后将需要...

    我总结的Android编程规范 - 薰衣草的旋律 - 博客园1

    包括目录命名规则、JSON 解析、类成员初始化、Int 类型常量、Activity 接受参数与模块化、AndroidStudio 工程目录组织、Handler 的封装、List 的数据更新、Activity 与 Fragment 之间传递参数、网络请求数据模块化...

    《Fragment间传递参数及结果》源码.

    本篇将深入探讨如何在Fragment之间传递参数以及获取结果。 首先,我们来看Fragment间传递参数的方式。最常见的方法是通过Bundle对象。当创建一个新的Fragment实例时,我们可以将参数放入Bundle,然后在目标Fragment...

    Fragment和Activity通信以及Fragment之间通信的方式(1)

    2. **使用Bundle**:在创建Fragment时,我们可以通过Bundle对象传递参数给Fragment。比如,Activity可以通过setArguments()方法设置Bundle,Fragment在onCreate()或onCreateView()中通过getArguments()获取这些参数...

    Activity传递参数至Fragment中

    安卓中Activity中的参数传递至Activity中的Fragment中,参数的传递,详细说明查看博客地址:http://blog.csdn.net/Sunjianhua360/article/details/51189086

    Fragment的介绍,以及Fragment与Activity之间的通信

    Fragment与Activity之间的通信是通过接口、回调、Bundle参数和公共方法实现的。以下是常见的通信方式: 1. **Interface回调**:Fragment定义一个接口,Activity实现该接口。当Fragment需要与Activity交互时,调用...

    android activity fragment 交互 简明版

    - **Bundle参数**:在添加或替换Fragment时,可以通过Bundle传递数据到Fragment的构造函数或setArguments()方法。 - **getActivity()方法**:Fragment可以直接调用getActivity()获取引用到其关联的Activity,然后...

    Fragment通信及参数传递

    在这个实例中,我们将探讨如何通过接口调用来实现Fragment之间的通信和参数传递。 首先,理解Fragment通信的重要性:在大型应用中,一个Activity往往包含多个Fragment,它们各自负责不同的功能区域。为了使这些...

    Fragment和Activity交互

    本文将深入探讨Fragment和Activity之间如何进行UI更改和数据传递。 首先,我们来理解Fragment和Activity的基本概念。Activity是Android应用中的顶级组件,它负责创建和管理窗口,处理用户输入,并控制应用的生命...

    fragment和activity之间通信

    2. **Activity向Fragment传递数据**: - 在创建Fragment时通过构造函数传递参数。 - 使用`setArguments(Bundle args)`和`getArguments()`方法:在创建Fragment实例时设置Bundle对象,然后在Fragment内部通过`...

    Android Activity与Fragment之间的跳转实例详解

    在创建新的Fragment实例时,通过`newInstance`方法传递参数,并在`onCreate()`中获取。这种方式可以避免直接在Fragment的构造方法中传入参数,防止因Fragment的重建而导致问题。 四、Fragment与Activity的交互 ...

    Fragment和Activity双向交互

    2. **FragmentManager**:通过FragmentManager,Activity可以管理Fragment的添加、替换、移除等操作,同时可以在Transaction中传递参数。 3. **Bundle参数**:在创建Fragment时,通过`Bundle`参数传递数据。例如,...

    AndroidFragment数据传递

    接下来,我们讨论Activity向Fragment传递数据。最直接的方法是在Fragment的构造函数或`onCreateView()`中通过参数接收数据。另一种方法是通过Fragment的setArguments()方法,使用Bundle传递数据,然后在Fragment的`...

    Fragment之间通信实例

    1. **Bundle进行数据传递**:当创建新Fragment或将Fragment添加到Activity时,可以通过Bundle对象传递数据。例如,Fragment A可以通过setArguments(Bundle)方法设置参数,然后在Fragment B的onCreate()或...

    Activity,ViewPager,Fragment和TabLayout数据传递

    如果每个`Tab`代表一个`Fragment`,那么数据传递的方式就跟前面介绍的一样,通过`Activity`或`Fragment`之间直接传递。 综上所述,`Activity`, `ViewPager`, `Fragment` 和 `TabLayout` 的数据传递涉及到`Intent`、...

    使用fragment在activity中传值的例子

    本示例将详细介绍如何在Activity与Fragment之间传递数据。 首先,了解Fragment的基本结构。一个Fragment通常包含布局文件和Java代码。在布局文件中,定义了Fragment显示的视图元素。在Java代码中,我们创建Fragment...

Global site tag (gtag.js) - Google Analytics