Activity之间传递参数(二)
------siwuxie095
传递数据包
1、传递数据包要用到Bundle,MainActivity.java中:
|
package com.siwuxie095.sendargs; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; public class MainActivity extends AppCompatActivity { @Override protected super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.btnStartAty).setOnClickListener(new View.OnClickListener() { @Override public //创建一个new Intent()实例,传入Context和Class类型的参数 //对应MainActivity.this 和 Intent i = new Intent(MainActivity.this,TheAty.class); // //通过Intent对象,调用putExtra()方法,传参 // //这里传入String和String类型的参数,实际上就是键值对 // i.putExtra("data","你好 //传递数据包要用到Bundle,通过Bundle存入多种类型数据,传给第二个Activity Bundle b=new Bundle(); //b.putBundle(); 即Bundle也可以嵌入Bundle b.putString("name","Jack"); b.putInt("age",22); //putExtras() 传入Bundle i.putExtras(b); //传入i startActivity(i); } }); } } |
2、在另一个Activity 即 TheAty.java 中,接收Bundle和设置默认参数
(默认参数也可以被传入的参数覆盖):
|
package com.siwuxie095.sendargs; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; public class TheAty extends AppCompatActivity { private TextView tv; @Override protected super.onCreate(savedInstanceState); setContentView(R.layout.activity_the_aty); //TheAty是通过MainActivity中的Intent启动,直接通过getIntent()方法 //获取与这个Activity相关的Intent Intent i=getIntent(); //在第二个Activity 即TheAty 获取Bundle Bundle data=i.getExtras(); //要访问TextView,先在上面声明 //findViewById()的返回值在编译时只能查看到类型是View,而事实上是TextView类型 //需要强制类型转换 tv= (TextView) findViewById(R.id.tv); // //调用setText()方法设置字符串,这里字符串通过Intent获取 // tv.setText(i.getStringExtra("data")); //用到了String.format() // 假如有一个不存在的数据 // 那么getString()有一个重载函数 tv.setText(String.format("name = %s, age = %d, namex = %s",data.getString("name"),data.getInt("age"),data.getString("namex","Mary"))); } } |
3、运行一览:


4、除了通过直接
putExtras(),传入Bundle外,还可以通过putExtra()传:
|
package com.siwuxie095.sendargs; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; public class MainActivity extends AppCompatActivity { @Override protected super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.btnStartAty).setOnClickListener(new View.OnClickListener() { @Override public //创建一个new Intent()实例,传入Context和Class类型的参数 //对应MainActivity.this 和 Intent i = new Intent(MainActivity.this,TheAty.class); // //通过Intent对象,调用putExtra()方法,传参 // //这里传入String和String类型的参数,实际上就是键值对 // i.putExtra("data","你好 //传递数据包要用到Bundle,通过Bundle存入多种类型数据,传给第二个Activity Bundle b=new Bundle(); //b.putBundle(); 即Bundle也可以嵌入Bundle b.putString("name","Jack"); b.putInt("age",22); //putExtras() 传入Bundle // i.putExtras(b); //除了通过putExtras()传,还能用下面的putExra() i.putExtra("data",b); //传入i startActivity(i); } }); } } |
5、获取Bundle时也有所不同:
|
package com.siwuxie095.sendargs; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; public class TheAty extends AppCompatActivity { private TextView tv; @Override protected super.onCreate(savedInstanceState); setContentView(R.layout.activity_the_aty); //TheAty是通过MainActivity中的Intent启动,直接通过getIntent()方法 //获取与这个Activity相关的Intent Intent i=getIntent(); //在第二个Activity 即TheAty 获取Bundle // Bundle data=i.getExtras(); Bundle data=i.getBundleExtra("data"); //要访问TextView,先在上面声明 //findViewById()的返回值在编译时只能查看到类型是View,而事实上是TextView类型 //需要强制类型转换 tv= (TextView) findViewById(R.id.tv); // //调用setText()方法设置字符串,这里字符串通过Intent获取 // tv.setText(i.getStringExtra("data")); //用到了String.format() // 假如有一个不存在的数据 // 那么getString()有一个重载函数 tv.setText(String.format("name = %s, age = %d, namex = %s",data.getString("name"),data.getInt("age"),data.getString("namex","Mary"))); } } |
【made by siwuxie095】
Activity之间传递参数(二)的更多相关文章
- 在Activity之间传递参数(二)
传递数据包bundle: 1.MainActivity.class: findViewById(R.id.btnStartAty).setOnClickListener(new View.OnClic ...
- Android学习总结——Activity之间传递参数
核心内容:一.在 Activity 之间传递简单数据二.在 Activity 之间传递复杂数据 三.在 Activity 之间传递自定义值对象 软件环境:Android Studio 一.在 ...
- Activity之间传递参数(四)
--------siwuxie095 获取Activity的返回参数 1.首先修改两个布局文件,都修改为 LinearLayout 布局, 添加orientation属性为:vertical. (1) ...
- 在Activity之间传递参数(四)
获取Activity的返回参数(在参数(三)User的例子的基础上实现): 1.activity_the_aty.xml文件:<EditText android:id="@+id/ed ...
- 在Activity之间传递参数(一)
准备: 一.创建主界面:activity_main.xml文件中<Button android:text="启动另一个Activity" android:id="@ ...
- Activity之间传递参数(三)
------siwuxie095 传递值对象,即自定义的有数据类型的对象 1.首先 new 一个 class:User,用于创建自定义对象,同时右键 Generate 出 Constructor.se ...
- Activity之间传递参数(一)
-------siwuxie095 传递简单数据 (1)首先创建一个项目:SendArgs (2)选择API:21 Android 5.0 (3)选择 Empty Activity (4)默认 (5) ...
- 在Activity之间传递参数(三)——serializable和parcelable的区别
传递值对象: 一.serializable实现:简单易用 serializable的迷人之处在于你只需要对某个类以及它的属性实现Serializable 接口即可.Serializable 接口是一种 ...
- [Android学习]Activity之间传递对象和对象集合
开发过程中,Activity之间传递数据是必不可少的,android中使用Intent和Bundle作为数据载体,在Activity之间传递,对于基础数据类型,Bundle已经提供相关的put,get ...
随机推荐
- 使用Servlet上传文件
使用浏览器向服务器上传文件其本质是打开了一个长连接并通过TCP方式传输数据.而需要的动作是客户端在表单中使用file域,并指定该file域的name值,然后在form中设定enctype的值为mult ...
- c++学习一:指针基础
1.指针优势,当数据量比较大时,通过指针直接访问数据量所在内存.处理更 加复杂的数据结构.例如:链表.二叉树.图等.2.指针本质是一种表示内存地址的数据类型,它和整型int和浮点数float一样 只是 ...
- iOS 设置铃声---加载音乐和音频然后进行播放
在有些应用中需要用到背景音乐和音效,那在程序中是这么实现的. 1.首先加载背景音乐需要用到AVFoundation框架 2.音乐资源都是在包里的,所以需要获得包路径,涉及方法- (id)initWit ...
- ios中,在SearchBar里面搜索内容,可根据内容来查找所需的信息资源,可获得SearchBar中的内容
贴一段我很久以前写的小demo,你们就明白了,是把textField套在alertView里的@interface ViewController : UIViewController <UIAl ...
- 关于iOS地图定位中点击设置->隐私->定位服务 闪退问题
iOS8之后,如果应用中用到了地图定位,那么点击设置->隐私->定位服务 再点击该应用有时候会出现闪退问题,其原因是iOS8之后定位中添加了 NSLocationWhenInUseDesc ...
- 关于NK3C使用富文本编辑器(CKEditor)发送HTML邮件的使用说明
目前NK3C发送HTML邮件使用的的编辑器是CKEditor4.6版本,关于CKEditor的使用说明如下: 1.依赖JQuery1.7版本以上,在xxx.vm中<head>< ...
- Java设计模式--模板方法模式
定义: 模板模式是一种行为设计模式,使用了JAVA的继承机制,在抽象类中定义一个模板方法,该方法引用了若干个抽象方法(由子类实现)或具体方法(子类可以覆盖重写).它的实现思路是,创建一个桩方法,并且定 ...
- matlab clear
clear 删除工作空间中的项目,释放系统内存 语法: clear clear name clear name1 name2 name3... clear global name clear -reg ...
- VS2010安装帮助文档出现错误
安装VS2010后的帮助文档安装出现错误:未能在指定文件夹中创建本地存储区 安装完VS2010后,出现错误,取消后 再安装MSDN 打开“Help Library 管理器 - Microsoft He ...
- Redis性能点
AliRedis是来自阿里巴巴的基于Redis改造的缓存产品,目前还未开源.网上只能搜到这么一篇资料<AliRedis单机180w QPS, 8台服务器构建1000w QPS Cache集群&g ...