方式比较多,先看看代码,一会儿再总结。

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Button
        android:id="@+id/btn1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="向第二个活动传递数据" />
</RelativeLayout>

secondactivity.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tv1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="这是第二个活动" />

    <Button
        android:id="@+id/btn2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="返回数据" />

</LinearLayout>

SecondActivity.java

public class SecondActivity extends Activity implements OnClickListener
{

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.secondactivity);

        Button btn = (Button) findViewById(R.id.btn2);
        btn.setOnClickListener(this);

        //第一种方式 intent.getStringExtra(String);或者intent.getIntExtra(String,int defaultValue);
        Toast.makeText(this, getIntent().getStringExtra("str1"), Toast.LENGTH_LONG).show();
        //Toast.makeText(this, getIntent().getIntExtra("age", 0), Toast.LENGTH_LONG).show();

        //第二种方式、利用Bundle对象,bundle.getString()或者bundle.getInt();
        //Bundle bundle = getIntent().getExtras();
        //Toast.makeText(this, bundle.getString("str2"), Toast.LENGTH_LONG).show();
        //Toast.makeText(this,bundle.getInt("age2"),Toast.LENGTH_LONG).show();
    }
    @Override
    public void onClick(View v)
    {
        Intent intent = new Intent();
        //返回数据的
        //第一种方式 putExtra()
        intent.putExtra("age3", 45);

        //第二种方式setExtra()
        //intent.setData(Uri.parse("我是返回数据"));

        setResult(RESULT_OK,intent);  

        //一定记得关闭当前activity并返回控制权
        finish();
    }
}

在AndroidManifest.xml中注册。

<activity
            android:name=".SecondActivity"
            android:label="@string/second_activity">
            <intent-filter >
                <action android:name="com.example.passingdata"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>

MainActivity.java

public class MainActivity extends Activity implements OnClickListener
{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btn = (Button) findViewById(R.id.btn1);
        btn.setOnClickListener(this);
    }

    @Override
    public void onClick(View v)
    {
        //传递数据的话,也要带上请求码
        Intent intent = new Intent("com.example.passingdata.SecondActivity");

        //传递数据的方式1: 使用 intent.putExtra();
        intent.putExtra("str1", "String1");
        intent.putExtra("age", 25);

        //方式2:bundle.putString(); bundle.putInt();最后把bundle绑定到intent上intent.putExtras();
        //Bundle bundle = new Bundle();
        //bundle.putString("str2", "String2");
        //bundle.putInt("age2", 35);
        //intent.putExtras(bundle);  //从这里可以看出,bundle作用上也相当于一个集合

        startActivityForResult(intent,1);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        if(requestCode==1)
        {
            if(resultCode==RESULT_OK)
            {
                //取得数据
                //方式1: getIntExtra()

                Toast.makeText(this,
                        Integer.toString(data.getIntExtra("age3", 0)),
                        Toast.LENGTH_LONG).show();

                //方式2: intent.getData();  它对应了Uri.parse()那种
                //Toast.makeText(this, data.getData().toString(), Toast.LENGTH_LONG).show();
            }

        }
    }
}

(注意不要在传递数据的时候,用多种方式,很容易出错)

看看效果:

点击一个“返回数据”


闭着眼小结一下:(传递数据死活离不开intent,目前我了解到的是这样)

发送方:

a.  intent.putExtra() ,也就是putExtra()的方式添加 Key/Value

b. 先把键值对给bundle对象,bundle.putString()或者bundle.putInt();然后把bundle给intent:intent.putExtras();

c.intent.setData(Uri.parse(String))   //应该是用于打开网页吧?

--------------(发送完了记得finish())

接受方:

a.  getIntent()之后 ,用intent.getStringExtra() /  intent.getIntExtra();

b. getIntent()之后,intent.getExtras()获取bundle对象,在之后,bundle.getString() /  bundle.getInt()

c.intent.getData().toString();

好了,就这么多,记牢。

Intent传递数据的更多相关文章

  1. Android Intent传递数据

    刚开始看郭大神的<>,实现以下里面的一些例子.Intent传递数据. 我们利用显示的方式进行Intent的启动. 1.启动intent并输入数据. Intent intent=new In ...

  2. 【转】Android 之最新最全的Intent传递数据方法

    原文地址:https://www.jianshu.com/p/1169dba99261 intent传递数据 为什么要和intent单独拿出来讲,因为Intent传递数据也是非常重要的 一.简单的传递 ...

  3. Android Activity传递数据使用getIntent()接收不到,揭秘Intent传递数据与Activity启动模式singleTask的关系。

    activity通过intent传递数据的时候,如果activity未启动,那么在这个刚启动的activity里通过getIntent()会获取到这个intent的数据.. 如果要启动的activit ...

  4. Android 消息广播Intent传递数据

    1.创建布局文件activity_broadcast.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk ...

  5. Android 开发中使用Intent传递数据的方法

    Activity之间通过Intent传递值,支持基本数据类型和String对象及 它们的数组对象byte.byte[].char.char[].boolean.boolean[].short.shor ...

  6. Android学习之Intent传递数据

    Intent在Activity中的作用主要是有两个: 1.启动目标Activity 2.传递数据 Intent在传递数据时分两种情况:向下一个Activity传递数据和从下一个Activity返回数据 ...

  7. [Android] Android 最全 Intent 传递数据姿势

    我们都是用过 Intent,用它来在组件之间传递数据,所以说 Intent 是组件之间通信的使者,一般情况下,我们传递的都是一些比较简单的数据,并且都是基本的数据类型,写法也比较简单,今天我在这里说的 ...

  8. Android学习之基础知识四-Activity活动4讲(Intent传递数据)

    Intent除了可以开启一个活动,还能在启动活动的时候传递数据,此时Intent相当于一个保存数据的库,我们先把数据保存在Intent中,然后再根据各个activity的需要从其中取出数据.  一.使 ...

  9. Intent传递数据全解

    概述 之前的博文也有介绍,查看-->用户界面开发基础 这里单独抽取出来,更加具体的记录一下,事实上主要是API的使用. Intent传递简单数据 能够以直接通过调用Intent的putExtra ...

随机推荐

  1. Data Flow ->> Character Map

    这个组件可以实现几个功能,可以选择替换或者生成新的字段传递给下游用. 1)中文简体转繁体 2)英文字母大小写转换 3)字符在半角和全角间转换 4)byte字节倒转过来

  2. 第一次做的struts2与spring整合

    参考:http://www.cnblogs.com/S-E-P/archive/2012/01/18/2325253.html 这篇文章说的关键就是“除了导入Struts2和Spring的核心库之外, ...

  3. 解决:Eclipse调试的时候报错'Launching XXX' has encountered a problem. Cannot connect to VM.

    问题如下图: 原因:开了代理(我使用的是Proxifier)如图 解决方案:关闭Proxifier即可

  4. linux系统的 suid/guid简单介绍 linux suid guid

    我们在前面曾经提到过s u i d和g u i d.这种权限位近年来成为一个棘手的问题.很多系统供应商不允许实现这一位,或者即使它被置位,也完全忽略它的存在,因为它会带来安全性风险.那么人们为何如此大 ...

  5. java日期格式的转换

    1.转换指定格式的日期 /** * 日期格式转换 * @throws ParseException */ public String dateformat(String date,String tab ...

  6. 转:ViewPager+Fragment基本使用方法(附源码)

    ViewPager+Fragment可以做出多页面滑动效果,让我们的应用程序界面操作起来更加灵活 对于ViewPager和Fragment组件还不熟悉的朋友,可以先看看相关的资料 首先在activit ...

  7. R语言缺失值信息处理

    mean(!is.na(mat))可以计算数据完整度(没有缺失值的) mean(!is.na(mat))>0.9,90%完整可以使用 # 缺失值的位置研究as.vector(attributes ...

  8. HDU (线段树 单点更新) 敌兵布阵

    哎,又切了一天的水题. 线段树果然必须自己写出来才能叫真正的会了,之前一直在套模板确实不好. 这个题目是单点更新 之 单点增减,= ̄ω ̄= #include <cstdio> <&l ...

  9. 添加第三方类库造成的linker command failed with exit code 1 (use -v to see invocation)的错误调试

    linker command failed with exit code 1 (use -v to see invocation)这个错误貌似遇见并不止一次,当我想用某个第三方类库的时候(如SBJso ...

  10. CI在CentOS中的部署与实践LNMP

    1. 平台:lnmp CentOS6.4 (64bit) nginx1.2.4+php5.5.7配置过程中遇到的问题与处理方式: 1. 404错误: 原因:nginx中的配置请求路径的问题 2. 40 ...