Intent传递数据和Bundle传递数据是一回事, Intent传递时内部还是调用了Bundle。...以下为源码: public Intent putExtra(String name, boolean value) { if (mExtras == null) { mExtras...= new Bundle(); } mExtras.putBoolean(name, value); return this; }
这个intent现在为止就是在启动一个活动 现在看来有点屈才啊,,,其实还能传递数据。...怎么去传递-*- intent里面有很多的putexra的重载方法,里面有两个参数 一个参数是键,从后面的活动里面取值,第二个参数是才是要传递的数据 这是要写的代码 首先通过getIntent()得到...SecondActivity的启动信息 然后调用getstringextra()的方法老获取传递的数据 由于数据是整形数据,所以用getIntExtra()函数 布尔的话就是getBoolenExtra...()方法 可以从日志里面看见出传递的值,这样就成功。
= ByteArray(1024 * 1024) intent.putExtra("111", data) startActivity(intent) 如上我们传递了1M大小的数据时,结果程序就一直反复报如下...但我们平时传递少量数据的时候是没问题的。由此得知,通过intent在页面间传递数据是有大小限制的。本文我们就来分析下为什么页面数据传输会有这个量的限制以及这个限制的大小具体是多少。...intent, @Nullable Bundle options) { if (options !...intent, int requestCode, Bundle options) { IApplicationThread whoThread = (IApplicationThread...一般适用于同一进程内,这样本质上数据在内存中只存在一份,通过静态类进行传递。需要注意的是进行数据校对,以防多线程操作导致的数据显示混乱。
---- Intent传递简单数据 ?...可以以直接通过调用Intent的putExtra()方法存入数据,然后在获得Intent后调用getXxxExtra获得 对应类型的数据;传递多个的话,可以使用Bundle对象作为容器,通过调用Bundle...bundle); startActivity(intent); Intent传递对象 传递对象的方式有两种:将对象转换为Json字符串或者通过Serializable...Intent传递Bitmap bitmap默认实现Parcelable接口,直接传递即可 Bitmap bitmap = XXXX; Intent intent = new Intent(); Bundle...bundle = new Bundle(); bundle.putParcelable("bitmap", bitmap); intent.putExtra("bundle", bundle); 通过全局对象传递数据
Intent传递数据时,如果数据太大,可能会出现异常。比如App闪退,或是Intent发送不成功,logcat报错等等。 这就牵涉到一个问题:Intent 传递数据大小限制。...Intent携带信息的大小受Binder限制 Intent携带信息的大小其实是受Binder限制。本文标题也可以改为“Binder传递数据大小限制”。...数据以Parcel对象的形式存放在Binder传递缓存中。 如果数据或返回值比传递buffer大,则此次传递调用失败并抛出TransactionTooLargeException异常。...在使用Intent传递数据时,1Mb并不是安全上限。因为Binder中可能正在处理其它的传输工作。 不同的机型和系统版本,这个上限值也可能会不同。...在其它地方,例如onSaveInstanceState(@NonNull Bundle outState),也可能会遇到与Binder有关的类似问题。
,所以说 Intent 是组件之间通信的使者,一般情况下,我们传递的都是一些比较简单的数据,并且都是基本的数据类型,写法也比较简单,今天我在这里说的是如何使用 Intent 传递对象及集合,我们知道Intent....fromJson(json,User.class); 1.2 方式二 这种方式就是将数据封装到 Bundle 中然后把 Bundle 对象调用 Intent 的 putExtra 方法然后传递过去,Bundle...类默认也是已经实现了 Parcelable 接口的,所以可以传递 Bundle 对象。...intent=new Intent(ActivityA.this,ActivityB.class); Bundle bundle = new Bundle(); bundle.putParcelable...bundle = new Bundle(); bundle.putSerializable("map", sMap); Intent intent = new Intent(ActivityA.this
前言 Bundle 翻译成中文的意思是“捆绑”,常用在Activity间传递参数,之前一开始并不太待见,原因是Intent本身就可以传递,Intent.putExtra(“key”, value),为何还要用...正巧小伙伴问Android传值Intent和Bundle区别,特此总结下: Intent与Bundle在传值上的区别 首先从使用上: Intent方式: 假设需要将数据从页面A传递到B,然后再传递到C...Bundle相对于Intent拥有更多的接口,用起来比较灵活,但是使用Bundle也还是需要借助Intent才可以完成数据传递总之,Bundle旨在存储数据,而Intent旨在传值。...因为使用Bundle的场景大多数为小数据量,我没见过在两个Activity之间传递10个以上数据的场景,所以相比之下,在这种情况下使用ArrayMap保存数据,在操作速度和内存占用上都具有优势,因此使用...Bundle来传递数据,可以保证更快的速度和更少的内存占用。
向下一个活动传递数据 Intent不仅可以用来启动活动,还可以在启动活动的时候传递数据。...思路很简单,Intent提供了一系列putExtra()方法的重载, 可以把我们想要传递的数据暂存在Intent中,启动了另一个活动后, 再把这些数据从Intent中取出就可以了。...startActivity(intent); 我们使用显式Intent方式启动SecondActivity,并通过putExtra()方法传递了一个字符串, 接收两个参数, 第一个参数是键,用于后面从...Intent中取值, 第二个参数是要传递的数据。...(); 还是构建了一个Intent,不过这个Intent仅仅用于传递数据而已, 没有指定任何“意图”,把要传递的数据存放在Intent中,调用setResult()方法, 专门用于向上一个活动返回数据的
Intent intent=new Intent(MainActivity.this,TestAcitvity.class); Bundle bundle=new Bundle(); bundle.putString...(“name”,”shaomiao”); bundle.putInt(“age”,17); /////// intent.putExtras(bundle); startActivity(intent)...(“age”))); ---- 第二种: Intent intent=new Intent(MainActivity.this,TestAcitvity.class); Bundle bundle=new...Bundle(); bundle.putString(“name”,”shaomiao”); bundle.putInt(“age”,17); //////// intent.putExtra(“data...”,bundle); startActivity(intent); ---- Intent i=getIntent(); Bundle bundle=i.getBundleExtra(“data”);
问题: 从页面A传递一个Bean对象给页面B,Bean对象里有一个List集合 Bean: public class Bean implements Serializable { private...java.lang.RuntimeException: Parcelable encountered IOException writing serializable object 查了很久发现原因,传递的这个
Android为intent提供了两种传递对象参数类型的方法 分别需要使实体类实现Serializable接口、Parcelable接口 首先我们要知道,传递对象,需要先将对象序列化 一、那么为什么要对象序列化... 1、永久性保存对象,保存对象的字节序列到本地文件中; 2、用过序列化对象在网络中、进程间传递对象; 二、序列化对象什么时候实现Serializable接口,什么时候实现Parcelable接口接口...= sex; 31 } 32 33 public void setAge(int age) { 34 this.age = age; 35 } 36 } 2、传递数据步骤... //创建Intent对象 Intent intent = new Intent(); intent.setClass(MainActivity.this,... Intent intent = new Intent(); intent.setClass(MainActivity.this, NewActivity.class);
启动一个Activity: 在用startActivityForResult()来启动一个Activity时,Intent的写法与startActivity()是一样的,没有任何区别,只是你需要传递一个额外的..., int, Bundle)} * with no options...data) { if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { Bundle extras...,下面就是一个获取Intent的例子: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate...Activity进行信息传递和沟通的讲解,到此Intent系列文章完结,前两篇文章是关于Intent详解和Intent使用的文章,有什么不明白的请留言,大家共同学习,共同进步,谢谢!
使用intent在活动间传递值 首先是 MainActuvity 活动(注册界面 写完个人信息点击注册 ) 跳转到 In 活动 (通过 intent 获得 MainActivity 中的信息 ) 效果图如下...user_birth ; EditText user_phone ; //注册按钮 点击跳转 Button button01 ; public void onCreate(Bundle...实现活动间的信息传递 button01.setOnClickListener(new View.OnClickListener() { @Override...活动: Java代码: public class In extends AppCompatActivity { @Override protected void onCreate(Bundle...--//放置前一个活动传递进来的信息--> <TextView android:id="@+id/In_tv_01" android:layout_width="
接下来是借助Intent来进行Activity之间的数据传递,要借助Intent对象来进行Activity 之间的数据传递,要借助Intent类的putExtra方法: ?...所以我们可以通过我们自定义的类型实现这个接口,然后通过这个参数使得我们的自定义类型的对象能够通过Intent对象来进行传递,接下来通过一个例子来试验: 新建一个Android工程: activity_main.xml...要传输的数据设置为Bundle对象,其实即使我们直接通过Intent对象的putExtra方法 * 来传送数据,在内部还是使用Bundle对象来存储这个数据,因此Intent其实是通过...第三个方法sendObjectData中的Book类就是实现了serializable接口,之后通过intent的putExtra方法的重载实现的传递,我们来看一下Book.java: package...intent = getIntent(); Bundle bundle = intent.getExtras(); String text = bundle.getString
本文实例讲述了Android编程实现全局获取Context及使用Intent传递对象的方法。...传递对象 使用 Intent 来传递对象通常有两种实现方式,Serializable 和 Parcelable。...Festival festival = new Festival("元旦节","1月1日"); Intent intent = new Intent(FirstActivity.this,SecondActivity.class...,接着再将它向下转型成 Festival 对象,这样就成功实现了使用 Intent 传递对象的功能了。...Parcelable方式: Parcelable 方式的实现原理是将一个完整的对象进行分解,而分解后的每一部分都是 Intent 所支持的数据类型,这样也就实现传递对象的功能了。
intent); 另外一个页面接收数据: 1 textView=(TextView)findViewById(R.id.textview2); 2 Bundle bundel=this.getIntent...().getExtras(); 3 textView.setText(bundel.getString("MyTest")); 这个接收数据也是同Bundle类来实现,和键值对有点相似。...bundle=data.getExtras(); 8 if(bundle!...12 } 返回来的数据: 1 Intent intent=getIntent(); 2 Bundle bundle2=new Bundle(); 3...bundle2.putString("name", "123456"); 4 intent.putExtras(bundle2); 5
做项目过程中,经常遇到需要更新原厂的代码,有的时候发的patch,有的是发的bundle,stackoverflow 中有一个回答描述了两者的区别1 其实bundle将常用,其中Pro Git...一书中打包详细描述具体的方法2这里记录下常用的命令 用git bundle create命令来打包 $ git bundle create repo.bundle HEAD master Counting...用git bundle create命令来打包,指定打包区间 $ git bundle create commits.bundle master ^9a466c5 Counting objects: 11...master中而不在origin/master分支中的commits 用git bundle verify校验是否合法 $ git bundle verify ...../commits.bundle is okay 用git bundle list-heads列出顶端提交 $ git bundle list-heads ..
类继承关系: java.lang.Object android.os.Bundle Bundle类是一个final类: public final class Bundle extends...("Data", "data from TestBundle"); (3)新建一个intent对象,并将该bundle增加这个intent对象 Intent intent = new Intent(...类1:TestBundle类: import android.app.Activity; import android.content.Intent; import android.os.Bundle...intent = new Intent(); intent.setClass(TestBundle.this, Target.class); Bundle mBundle =...new Bundle(); mBundle.putString("Data", "data from TestBundle");//压入数据 intent.putExtras(mBundle
这就相当于activity之间的数据的通信吧,信息的传递 方法是:使用Bundle类 根据前面的学习中可以看到,从ListView界面中,当我们点击每一行的item的时候,页面就应该要跳转到另外一个界面中去...super.onCreate(savedInstanceState); setContentView(R.layout.foodinfo); // 得到传递过来的值 Bundle...对象: 1. // 得到传递过来的值 Bundle bundle = getIntent().getExtras(); //getIntent()能够得到activity传递过来的意图(Intent...) 对象,然后调用getExtras()函数,我们能得到传递过来的批量数据,注意了,这个数据它是继承Map的, Intent android...., 总结: 1.A是怎么传递数据过来的: 首先定义一个意图,Intent intent = new Intent(); 其次 设置传递的数据:利用intent.putExtra(Key,Value
领取专属 10元无门槛券
手把手带您无忧上云