呃呃,这也许是我这几天来第一次郑重的写东西,更有趣的是此篇也是我在csdn上的第一篇博客,不是我太无聊,但总觉着的要写点什么,毕竟学了很多东西都忘了,权当做时间的交代吧。作为大二学生和安卓菜鸟,请开始大佬的斧正:
向下一个活动传递数据,当然需要两个活动啦,这里命名为FirstActivity和SecondActivity。
首先介绍的是一个方法:putExtra(),提供两个参数:第一个参数是键,第二个参数是值(有点java中Map的意思,呃呃)
好吧,直接用代码做例子吧:
在FirstActivity中:
Intent intent0=new Intent(FirstActivity.this,SecondActivity.class);
intent0.putExtra("extra_string_data","需要传递的数据");
startActivity(intent0);
在SecondActivity中接收数据:
Intent intent=getIntent();
String getData=intent.getStringExtra("extra_string_data");//参数也就是刚刚的键值
当然,还有getIntExtra()和getBooleanExtra()等这些方法接收传递来的不同类型数据;
不过,安卓还提供了Bundle这个方法,所以有了putExtras()这个方法;
举个例子应该不为过:
在FirstActivity中:Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
Bundle bundle=new Bundle();
bundle.putString("iName","cheng");//传递字符串
bundle.putInt("iOld",20);//传递整型数据
intent.putExtras(bundle);
startActivity(intent);
在SecondActivity中:
Bundle bundle=getIntent.getExtras();
String name=bundle.getString("iName");
int old=bundle.getInt("iOld");
当然,你也可以通过new Bundle().putIntArray()来传递整型数组;不过我记得有一次要传递一个二维数组,呃呃,我也没找到更好更简单的办法,别慌,问题不大:
比如一个名为maze的整型二维数组,
for(int i=0;i<maze.length;i++){
bundle.putIntArray("第"+(i+1)+"行",maze[i]);
}
接收方法类似,好吧,只能想到这个了,当然是选择原谅我了!
有必要提醒一下,不要通过Intent在Android基础组件之间传递大数据(binder transaction 缓存为1MB),可能导致OOM(嘿嘿,阿里巴巴android开发手册上强制规定了,嘻嘻)。
我觉得不能再写了,头发要紧。不过这几天心情不爽是真的,每天要应付各个老师无关紧要的作业,甚至需要花上三四个小时抄一份物理实验报告(我数据也是抄的),再加上要自学课程(貌似我大学这两年只听过一门课,真是对不起那么好的汇编老师)和感兴趣的课程(Python是真的好用)。身心憔悴,有些《长恨歌》里“鸡儿扶起娇无力”(我可能没有记错)。不说了,清明节也要加油呀!