Activity与Fragment之间传递参数

标签: activity fragment 参数 | 发表时间:2015-04-05 12:24 | 作者:scarlettli
出处:http://www.iteye.com
      在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,这个我就不多说了,大家可以自己去试试。

已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [activity fragment 参数] 推荐:

Activity与Fragment之间传递参数

- - 移动开发 - ITeye博客
      在Activity中加载Fragment的时候需要传值到另Fragment,也就是说Activityg与Fragment之间进行参数的传递,可以使用bundle进行参数传递,看代码:.       在activity中获取fragment中的数据. //在activity中获取相对应的fragment中的数据.

Activity嵌套多个Fragment实现横竖屏切换

- - CSDN博客推荐文章
       近期项目遇到个横竖屏切换的问题,较为复杂,在此记之.        1、Activity中竖屏嵌套3个Fragment,本文简称竖屏FP1,FP2,FP3.        2、其中竖屏FP1与FP2可以切换为横屏的FL1,FL2,即竖屏FP1切换到对应的横屏FL1,竖屏FP2对应切换到横屏FL2.

Android开发:使用Fragment改造TabActivity

- - BlogJava_首页
TabActivity在API 13(Android 3.2)被标记为过期,需要使用Fragment来实现,Fragment是Android 3.0引入的一个概念,主要就是为了适应各种不同的屏幕大小(手机、平板电脑). Android 4.1发布时,google还发布了一个Android Support v4的包,用于Android 1.6以上的系统兼容新的特性,其中包括Fragment.

Fragment或WebView里监听返回键

- - 移动开发 - ITeye博客
思路主要是在onResume事件里处理按钮事件并进行判断. 如果使用了WebView则在onKey里处理返回按钮事件. 已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.

Android Activity与Service通信

- - CSDN博客移动开发推荐文章
一、当Acitivity和Service处于同一个Application和进程时,通过继承Binder类来实现.      当一个Activity绑定到一个Service上时,它负责维护Service实例的引用,允许你对正在运行的Service进行一些方法调用. 比如你后台有一个播放背景音乐的Service,这时就可以用这种方式来进行通信.

使用intent来启动activity

- - CSDN博客推荐文章
Intent最常见的用途是绑定应用程序组件,并在应用程序之间通信.Intent用来启动Activity,允许创建不同屏幕的一个工作流. 要创建并显示一个Activity,可以调用startActivity,并传递给它一个Intent,如:. 可以构造Intent来显示地指定要打开的Activity类,或者包含一个目标Activity必须执行的动作.

从网页启动Activity

- - 移动开发 - ITeye博客
正好Android SDK 给我们提供了解决方案,在网页中点击某个链接时,会匹配到Activity所配置的隐式Intent(配置在Manifest文件中). 第一步:在Manifest文件中给TestActivity配置一个隐式Intent. 第二步:这时,当在网页中点击链接Start TestActivity就会启动TestActivity了.

Activity生命周期详解

- - 编程语言 - ITeye博客
本文概述:针对一个例子详细阐述Activity的生命周期. Android是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的Activity的集合,这个栈也叫返回栈(Back Stack). 每次我们启动一个新的Activity,这个Activity就会入栈,并处于栈顶位置. 按下返回键或者finish()方法销毁一个Activity时,处于栈顶的Activity就会出栈,另一个Activity就会处于栈顶位置,显示给用户的就会是这个Activity..

activity、 intent 、intent filter、service、Broadcast、BroadcaseReceiver解释

- - CSDN博客推荐文章
Android中,Activity是所有程序的根本,所有程序的流程都运行在Activity之中,Activity具有自己的生命周期(由系统控制生命周期,程序无法改变,但可以用onSaveInstanceState保存其状态). 对于Activity,关键是其生命周期的把握(如那张经典的生命周期图=.=),其次就是状态的保存和恢复(onSaveInstanceState onRestoreInstanceState),以及Activity之间的跳转和数据传输(intent).

在Activity之间传递数据

- - ITeye博客
在一个Activity中启动另一个Activy,取得数据,如:在应用 A 中启动 通讯录,选择目标用户,返回,以便在A 中使用选择的通讯录数据,基本过程如下:.         /* 开启Pictures画面Type设定为image */.         intent.setType("image/*");  //通讯录的不能这样写,.