基础之Intent向下,向上一个活动个传递数据
2016-03-08 23:52
459 查看
向下传数据
aActivity
bActivity中可直接得到intent,神奇,说对key就给你值了 从intent中getkey类型的Extra就返回a存的数据了
向上传数据
a中
-----------------------------------------------------------------
如果传递数据量大的话,可以把数据都放在一个类中
public class Person implements Serializable{
private int age;
private String name;
private String adress;
public Person(int age,String name,String adress){
this.name=name;
this.adress=adress;
this.age=age;
}
public String toString(){ //重写toString方法
return "[name="+name+"age+"+age+"adress+"+adress+" ]"
}
}
传入数据
Intent intent =new Intent(MainActivity.this,SecondActivity.class);
Bundle bundle=new Bundle();
Person person=new Person(20,"xiaoming","beijing");
bundle.putSerializable("key",person);
intent.putExtras(bundle);
startActivity(intent);
接收数据
Intent intent=getIntent();
Person person=(Person)intent.getSerializableExtra("key");
---------------------------------------------------------------------------------------------------------
传递一个bitmap对象
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
Bundle bundle=new Bundle();
Bitmap bitmap=BitmapFactory.decodeResource(getResource(),R.drawable.ic_launcher);
bundle.putParcelable("key",bitmap);
intent.putExtra(bundle);
startActivity(intent);
接收bitmap
Intent intent=getIntent();
Bitmap bitmap=intent.getParcelableExtra("key");
imageView.setImageBitmap(bitmap);
传递数据
传入
Intent intent =new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("key","stringValue");
intent,putExtra("key2",Int);
startActivity(intent);
取出
Intent intent =getIntent();
intent.getStringExtra("key");
intent.getIntExtra("key2",0);
通过Bundle传递数据
传入
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
Bundle bundle=new Bundle();
bundle.putString("key","stringValue");
bundle.putInt("key2",Int);
intent.putExtra(bundle);
startActivity(intent);
接收同上
-----------------------------------------------------------------------------------------------------------
bundle传递数据大于0.5M会抛出传输数据过大异常;
在传输大量数据的时候也有可能抛出TransactionTooLargeException异常,解决办法是减少bundle传输的数据量
task(任务)就是activities的序列集合
back stack(后台任务栈)对activities进行一系列的管理、打开、关闭
通过在Manifest中为activtiy注册信息时添加:process
即可分配不同的进程名;
使用activity的getTaskId()方法可以获得当前应用程序的taskId,同一个应用程序下的不同activity默认情况下的taskId都是相同的;
通过在DOS控制台中输入adb
shell dumpsys activity命令查看activity的运行情况:
Running activities下就是当前活动的Activity
Recent tasks下是模拟器上曾经运行过的程序,显示为程序程序包的名称
aActivity
String data = "Hello bActivity"; Intent intent = new Intent(aActivity.this, bActivity.class); intent.putExtra("adata", data); startActivity(intent);
bActivity中可直接得到intent,神奇,说对key就给你值了 从intent中getkey类型的Extra就返回a存的数据了
Intent intent = getIntent(); String adata = intent.getStringExtra("adata"); Toast.makeText(this,adata,Toast.LENGTH_SHORT).show();
向上传数据
a中
Intent intent = new Intent(aActivity.this, bActivity.class); startActivityForResult(intent,1);
protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode){ case 1: if(resultCode == RESULT_OK) { String data_b = data.getStringExtra("data_b"); Toast.makeText(this,data_b,Toast.LENGTH_SHORT).show(); } break; } }
findViewById(R.id.btn_b).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.putExtra("data_b", "Hello a"); setResult(RESULT_OK, intent); finish(); } }); } @Override public void onBackPressed() {//按下返回键达到同样的效果 Intent intent = new Intent(); intent.putExtra("data_b", "Hello a"); setResult(RESULT_OK, intent); finish(); }
-----------------------------------------------------------------
如果传递数据量大的话,可以把数据都放在一个类中
public class Person implements Serializable{
private int age;
private String name;
private String adress;
public Person(int age,String name,String adress){
this.name=name;
this.adress=adress;
this.age=age;
}
public String toString(){ //重写toString方法
return "[name="+name+"age+"+age+"adress+"+adress+" ]"
}
}
传入数据
Intent intent =new Intent(MainActivity.this,SecondActivity.class);
Bundle bundle=new Bundle();
Person person=new Person(20,"xiaoming","beijing");
bundle.putSerializable("key",person);
intent.putExtras(bundle);
startActivity(intent);
接收数据
Intent intent=getIntent();
Person person=(Person)intent.getSerializableExtra("key");
---------------------------------------------------------------------------------------------------------
传递一个bitmap对象
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
Bundle bundle=new Bundle();
Bitmap bitmap=BitmapFactory.decodeResource(getResource(),R.drawable.ic_launcher);
bundle.putParcelable("key",bitmap);
intent.putExtra(bundle);
startActivity(intent);
接收bitmap
Intent intent=getIntent();
Bitmap bitmap=intent.getParcelableExtra("key");
imageView.setImageBitmap(bitmap);
传递数据
传入
Intent intent =new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("key","stringValue");
intent,putExtra("key2",Int);
startActivity(intent);
取出
Intent intent =getIntent();
intent.getStringExtra("key");
intent.getIntExtra("key2",0);
通过Bundle传递数据
传入
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
Bundle bundle=new Bundle();
bundle.putString("key","stringValue");
bundle.putInt("key2",Int);
intent.putExtra(bundle);
startActivity(intent);
接收同上
-----------------------------------------------------------------------------------------------------------
bundle传递数据大于0.5M会抛出传输数据过大异常;
在传输大量数据的时候也有可能抛出TransactionTooLargeException异常,解决办法是减少bundle传输的数据量
task(任务)就是activities的序列集合
back stack(后台任务栈)对activities进行一系列的管理、打开、关闭
通过在Manifest中为activtiy注册信息时添加:process
即可分配不同的进程名;
使用activity的getTaskId()方法可以获得当前应用程序的taskId,同一个应用程序下的不同activity默认情况下的taskId都是相同的;
通过在DOS控制台中输入adb
shell dumpsys activity命令查看activity的运行情况:
Running activities下就是当前活动的Activity
Recent tasks下是模拟器上曾经运行过的程序,显示为程序程序包的名称
相关文章推荐
- Hibernate的双向N-N关联(六)
- Android基础UI之ListView注意点
- 32.Oracle深度学习笔记——LogMiner使用
- Apple Pay 详细教程
- 关于一个很好的google play营销网站
- stm32f407启动文件分析
- 148. Sort List
- 【ios】关于UIImageView的一个坑
- 手机QQ访问时,html页面在QQ中自定义预览和自定义分享
- 关于线程的一些概念和关于线程返回值的简单示例代码
- 软件测试技术 作业2
- Jquery.Datatables dom表格定位
- 关于动软一些规则,为了方便记住,所以抄了些下来
- Java集合之LinkedHashMap
- android中的文件操作详解以及内部存储和外部存储
- zhu的工作日记:LayoutAnimation的简单使用(android)
- 不要对td设置position样式
- 数据库中间件Mycat之主从读写分离
- Hibernate的双向1-N关联(五)
- UITextfile属性方法大全