在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,这个我就不多说了,大家可以自己去试试。
分享到:
相关推荐
2. **设置Intent或Arguments**:如果从Activity到Fragment传递数据,需要在创建Fragment实例时将Bundle作为参数传递给Fragment的构造函数,或者调用`setArguments(Bundle)`方法。如果是Activity间的跳转,将Bundle...
3. **在Activity中获取数据**:在Activity中,通过getArguments()方法获取Fragment传递过来的Bundle,然后从中取出数据。 示例代码: ```java // 在Activity中创建Fragment并传递数据 MyFragment fragment = new ...
- **通过Intent传递数据**:虽然Intent主要用于Activity之间的数据传递,但在启动Fragment时,我们也可以将数据通过Intent Bundle传递给Fragment,但这需要在Activity中手动将数据传递给Fragment的实例。 - **通过...
本示例主要关注两个核心知识点:Fragment与Activity之间的数据传递,以及Fragment之间的跳转。 首先,我们来探讨Fragment与Activity之间的数据传递。在Android中,有多种方式实现两者间的数据交换: 1. **通过...
首先,我们来看Activity向Fragment传递值的方法。这通常通过在创建Fragment时使用构造函数、setArguments()方法或者使用接口来实现。当我们在一个Activity中实例化Fragment时,可以创建一个Bundle对象,然后将需要...
包括目录命名规则、JSON 解析、类成员初始化、Int 类型常量、Activity 接受参数与模块化、AndroidStudio 工程目录组织、Handler 的封装、List 的数据更新、Activity 与 Fragment 之间传递参数、网络请求数据模块化...
本篇将深入探讨如何在Fragment之间传递参数以及获取结果。 首先,我们来看Fragment间传递参数的方式。最常见的方法是通过Bundle对象。当创建一个新的Fragment实例时,我们可以将参数放入Bundle,然后在目标Fragment...
2. **使用Bundle**:在创建Fragment时,我们可以通过Bundle对象传递参数给Fragment。比如,Activity可以通过setArguments()方法设置Bundle,Fragment在onCreate()或onCreateView()中通过getArguments()获取这些参数...
安卓中Activity中的参数传递至Activity中的Fragment中,参数的传递,详细说明查看博客地址:http://blog.csdn.net/Sunjianhua360/article/details/51189086
Fragment与Activity之间的通信是通过接口、回调、Bundle参数和公共方法实现的。以下是常见的通信方式: 1. **Interface回调**:Fragment定义一个接口,Activity实现该接口。当Fragment需要与Activity交互时,调用...
- **Bundle参数**:在添加或替换Fragment时,可以通过Bundle传递数据到Fragment的构造函数或setArguments()方法。 - **getActivity()方法**:Fragment可以直接调用getActivity()获取引用到其关联的Activity,然后...
在这个实例中,我们将探讨如何通过接口调用来实现Fragment之间的通信和参数传递。 首先,理解Fragment通信的重要性:在大型应用中,一个Activity往往包含多个Fragment,它们各自负责不同的功能区域。为了使这些...
本文将深入探讨Fragment和Activity之间如何进行UI更改和数据传递。 首先,我们来理解Fragment和Activity的基本概念。Activity是Android应用中的顶级组件,它负责创建和管理窗口,处理用户输入,并控制应用的生命...
2. **Activity向Fragment传递数据**: - 在创建Fragment时通过构造函数传递参数。 - 使用`setArguments(Bundle args)`和`getArguments()`方法:在创建Fragment实例时设置Bundle对象,然后在Fragment内部通过`...
在创建新的Fragment实例时,通过`newInstance`方法传递参数,并在`onCreate()`中获取。这种方式可以避免直接在Fragment的构造方法中传入参数,防止因Fragment的重建而导致问题。 四、Fragment与Activity的交互 ...
2. **FragmentManager**:通过FragmentManager,Activity可以管理Fragment的添加、替换、移除等操作,同时可以在Transaction中传递参数。 3. **Bundle参数**:在创建Fragment时,通过`Bundle`参数传递数据。例如,...
接下来,我们讨论Activity向Fragment传递数据。最直接的方法是在Fragment的构造函数或`onCreateView()`中通过参数接收数据。另一种方法是通过Fragment的setArguments()方法,使用Bundle传递数据,然后在Fragment的`...
1. **Bundle进行数据传递**:当创建新Fragment或将Fragment添加到Activity时,可以通过Bundle对象传递数据。例如,Fragment A可以通过setArguments(Bundle)方法设置参数,然后在Fragment B的onCreate()或...
如果每个`Tab`代表一个`Fragment`,那么数据传递的方式就跟前面介绍的一样,通过`Activity`或`Fragment`之间直接传递。 综上所述,`Activity`, `ViewPager`, `Fragment` 和 `TabLayout` 的数据传递涉及到`Intent`、...
本示例将详细介绍如何在Activity与Fragment之间传递数据。 首先,了解Fragment的基本结构。一个Fragment通常包含布局文件和Java代码。在布局文件中,定义了Fragment显示的视图元素。在Java代码中,我们创建Fragment...