【android】activity、fragment传值例子

1:Activity篇

1.1向Activity传值

比如First要给Second传递参数,我们可以这样写,关键点在于putExtra。如果传递类的话,记得类实现Serializable接口

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("param1", "data1");
intent.putExtra("param2", "data2");
startActivity(intent);

如果参数比较固定的话,我们可以考虑把传递参数写成一个静态方法,比如查看用户详情,参数固定就是用户实体。可以这样写

 private static final String PARAM_CONTACT_ENTITY = "zhexian.app.smartcall.contact.PARAM_CONTACT_ENTITY";

  public static void actionStart(Context context, ContactEntity entity) {
        Intent intent = new Intent(context, ContactDetailActivity.class);
        intent.putExtra(PARAM_CONTACT_ENTITY, entity);
        context.startActivity(intent);
    }

1.2 Activity获取参数

在SecondActivity,我们可以通过下面的代码,获取我们传递的用户实体参数。

getIntent().getSerializableExtra(PARAM_CONTACT_ENTITY);

2:Fragment篇

将Fragment添加到Activity上,目前常用的的有两种方式

1:直接把fragment标签写在布局xml上,通过name属性,来指定对应的fragment类。

2:使用FragmentManager动态替换fragment。

第一种方式比较少见,没法在fragment初始化时传递参数。但是我们可以传递给其托管的activity(参考1.1),然后fragment通过getActivity获取赋值好的参数。

第二种方式是比较常见的,也是我们接下来要说的。

2.1:向Fragment传值

这个代码就很简单了,我们通过IDE新建一个fragment的时候,如果勾选了创建静态工厂方法的话,ide会自动帮我们创建好模板,里面就包含了如何向该fragment传值。

比如我们新建了一个叫UserDetailFragment,其静态方法如下

    //参数名
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";

   //参数值
    private String mParam1;
    private String mParam2;

    public static UserDetailFragment newInstance(String param1, String param2) {
        UserDetailFragment fragment = new UserDetailFragment();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }

2.2:Fragment获取参数

在onCreate方法里面,如下:

  public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }
    }

tips:如果是类、枚举的话,通过getArguments().getSerializable()获取哦!

时间: 2024-10-27 17:36:04

【android】activity、fragment传值例子的相关文章

[转]Android:Activity+Fragment及它们之间的数据交换(一)

2014-05-18         来源:Android:Activity+Fragment及它们之间的数据交换(一)   简介: 为什么要用Fragment?使用Fragment可以在一个Activity中实现不同的界面.Fragment与 Fragment之间的动画切换,远比Activity与Activity之间的动画切换变化方式多.很多时候,我们通过使用一个Activity,切换 多个Fragment.本次博客,主要列举一下Fragment与它的Activity之间进行数据交换的方式.

Android Activity Fragment 生命周期

从开源项目中看到 这个,就不由自主的收藏了~ https://github.com/xxv/android-lifecycle Android Activity Fragment 生命周期

Android:Activity+Fragment及它们之间的数据交换(一)

简介: 为什么要用Fragment?使用Fragment可以在一个Activity中实现不同的界面.Fragment与Fragment之间的动画切换,远比Activity与Activity之间的动画切换变化方式多.很多时候,我们通过使用一个Activity,切换多个Fragment.本次博客,主要列举一下Fragment与它的Activity之间进行数据交换的方式. 1.Fragment中通过getActivity()然后进行强制转化,调用Activity中的公有方法 ((XXXXActivit

Android Activity 回传值

记录一下Activity往上级回传值的一些心得,及疑问. 需求: Activity A -> Activity B,并把一个Object instance(p) 传给B,Activity B 中,p的一些数据会实时更新,当用户返回A 时,需要把p带回给A, 方法 1  startActivityForResult() A 中: Intent intent = new Intent(this, B.class); intent.putExtra("key",value); star

Android Activity间传值

Android中不同的Activity之间的传值方式(Main为当前Activity,Login为目标Activity) 1.使用Intent Intent intent = new Intent(Main.this, Login.class); intent.putExtra("loginName", "rubekid"); 2.使用 静态变量 Person person = new Person(); person.setName("rubekid&q

Android -- Activity,Fragment lifecycle

Activity Lifecyce Fragment Lifecycle: 程序运行: 09-16 13:59:22.883 19022-19022/com.example.android.architecture.blueprints.todomvp.mock D/TasksActivity --debug: onCreate109-16 13:59:22.903 19022-19022/com.example.android.architecture.blueprints.todomvp.m

【转】Android Activity/Fragment Lifecycle

原文来自:http://stormzhang.github.io/android/2014/08/08/activity-fragment-lifecycle/ 说Activity和Fragment是Android开发中最重要的.使用最频繁的组件,应该没人反对,因此对他们生命周期的理解非常重要,废话不多说,一张图让你彻底理解Activity和Fragment的生命周期. 提供PDF下载:complete_android_fragment_lifecycle.pdf

Android activity之间传值

当对Android有一些了解后,不难发现,Android程序UI框架接近于Web页面的概念.每一个用于呈现页面的组件,Activity,都是彼此独立的,它们通过系统核心来调度整合,彼此之间的通过Intent机制来串联. 每一种架构都会有其利弊,Android当然也不能超然脱俗.由于Activity之间的松耦合关系,使得其复用能力特别的出色,Mash-Up方式可以有效的提高开发效率.但另一方面,由于Activity过于的独立,它们之间的数据共享,成为一个麻烦的事情. 一 基于消息的传输 最标准的A

Android activity之间传值关键性代码

从当前activity中获取et 表单中的值,并跳转到myactivity.java所绑定的xml布局文件上. private EditText et; Intent intent=new Intent(MainActivity.this,myactivity.class); String str=et.getText().toString(); intent.putExtra("name", str); startActivity(intent); myactivity.java所绑