两个Activity通信&&startActivityForResult的使用
来源:互联网 发布:网络金融营销普遍 编辑:程序博客网 时间:2024/06/07 12:59
两个Activity之间通信可以通过Handler方法、Intent的方法等,但是有时候需要在两个Activity之间传递数据,需要使用到startActivityForResult,请看下面的情况:
假设现在有两个Activity:MainActivity和OtherActivity,OtherActivity通过MainActivity中的点击事件启动:
public void onClick(View view){ Intent intent=new Intent(MainActivity.this,OtherActivity.class); startActivity(intent);}
然而在OtherActivity在返回之后,需要向MainActivity传递或更新数据,则以下方法是不行的:
//OtherActivity返回MainActivity事件点击......public void onClick(View view){ Intent intent=new Intent(OtherActivity.this,MainActivity.class); Bundle bundle=new Bundle(); bundle.putInt("data",data);//data为我们需要传递的数据 intent.putExtras(bundle); startIntent(intent);}//MainActivity中获取Intent......public void onCreate(Bundle bundle){ super.onCreate(bundle); setContentView(R.id.activity_main); Intent intent=getIntent();//获取Intent Bundle data=intent.getExtras(); int infor=bundle.getInt("data");//获取数据 ......}
以上方法只能单项传递数据:MainActivity向OtherActivity传递数据,不能实现OtherActivity向MainActivity传递数据,因为MainActivity是程序第一个启动的程序,在onCreate方法中将获取不到intent,程序将无法运行,导致RunTimeException!
而startActivityForResult(Intent intent, int requestCode)方法打开OtherActivity,OtherActivity 关闭后会向MainActivity传回数据,为了得到传回的数据,必须在MainActivity中重写onActivityResult(int requestCode, int resultCode, Intent data)方法。
在MainActivity中书写的代码如下:
public void onClick(View v) { //第二个参数为请求码,可以自己编写 Intent intent=new Intent(MainActivity.this, OtherActivity.class); startActivityForResult(intent, 0x10);}//为了得到OtherActivity返回的数据,必须重写onActivityResult方法@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { int data = data.getExtras().getInt("data");//得到OtherActivity 关闭后返回的数据 }
在OtherActivity中代码如下:
public void onClick(View v) { Intent intent = new Intent(OtherActivity.this,MainActivity.class); //把返回数据存入Bundle Bundle bundle=new Bundle(); bundle.putInt("data", data); intent.putExtras(bundle); //设置返回数据,setResult第一个参数为int resultCode,第二个为 Intent intent setResult(0x12, intent); //关闭OtherActivity finish();}
0 0
- 两个Activity通信&&startActivityForResult的使用
- 两个Activity之间的交互startActivityForResult的使用
- 两个Activity的通信:
- android Activity 之 startActivityForResult 的使用
- android Activity 之 startActivityForResult 的使用
- Activity基本单元、startActivityForResult方法的使用
- 两个activity之前传递数据startActivityForResult
- 从Activity中返回数据--startActivityForResult的使用..
- 用 startActivityForResult 方法启动 Activity 的简单使用
- 关于Activity和Fragment同时使用startActivityForResult的问题
- 两个不相关Activity之间的通信
- 一个activity两个fragment的通信
- 在一个activity中启动另一个activity并等待传输数据,即startActivityForResult()的使用
- Activity.startActivityForResult
- Activity startActivityForResult
- Activity---startActivityForResult()、onActivityResult()和setResult()使用
- single task Activity不能使用startActivityForResult解释
- android使用startActivityForResult跳转Activity并回传值
- 大型网站技术架构 笔记
- NOIP2011
- ubuntu下nvm,node以及npm的安装与使用
- 数据库事务隔离级别详解
- 晶振与匹配电容的总结
- 两个Activity通信&&startActivityForResult的使用
- HDU 4288
- mininet+流量发送+实验环境搭建
- 面试常见的strncpy源码问题
- x&(x-1)
- Cocos2d-X中的坐标
- MySQL之中文排序
- ExtJS常见问题解决办法
- HDU 5066 Harry And Physical Teacher 物理