startActivityForResult()
首先看结构 这个结构由三部分组成:
startActivityForResult
onActivityResult()
setResult()
这个三个函数构成
具体的参数就不写了 应该能知道。
注意的是调用setResult之后必须调用finish()不然的话 是不会跳转的
调用setResult的时候直接调用即将回跳的函数的
onActivityResult() 然后在调用该函数的onrestart onstart onresume 如果你在每个setResult后下finish方法 那么该activity直接调用destory方法。
第一个activity
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.v("startforrequest", "onCreate:"+this.getLocalClassName());
Button bt=(Button)findViewById(R.id.bt);
bt.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent=new Intent(StartForResultTest.this,StartForResultTest1.class);
startActivityForResult(intent, 0);
}});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
Log.v("startforrequest", "onActivityResult: "+requestCode+" : "+resultCode);
}
第二个activity
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main1);
Log.v("startforrequest", "onCreate:"+this.getLocalClassName());
Button bt=(Button)findViewById(R.id.bt);
bt.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent=new Intent(StartForResultTest1.this,StartForResultTest2.class);
startActivityForResult(intent, 1);
}});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
Intent intent=new Intent(this,StartForResultTest.class);
setResult(1, intent);
finish();
Log.v("startforrequest", "onActivityResult: "+requestCode+" : "+resultCode);
}
第三个也就是最后一个activity
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
Log.v("startforrequest", "onCreate:"+this.getLocalClassName());
Button bt=(Button)findViewById(R.id.bt);
bt.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent=new Intent(StartForResultTest2.this,StartForResultTest1.class);
setResult(2, intent);
finish();
}});
}
那么当跳转到最后一个的时候 回直接调回第一个activity 调用restart start resume方法之后
再destory 最后一个 倒数第二个..
/
startActivityForResult Demo
startActivityForResult(Itent intent, int requestCode)用来唤起一个Activity。利用这个方法,前一个Activity1便会有一个等待次Activity2的返回,返回时响应onActivityResult(int requestCode, int resultCode, Intent data)方法。
Demo如下:
第一个activity
- package com.kevin.intent;
- import android.app.Activity;
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.EditText;
- public class Main extends Activity implements OnClickListener{
- private Button btn_transfer;
- private EditText et_name;
- private int requestCode = 1;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- btn_transfer = (Button) findViewById(R.id.button1);
- et_name = (EditText) findViewById(R.id.editText1);
- btn_transfer.setOnClickListener(this);
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- System.out.println("requestCode--->" + requestCode);
- // resultCode是第二个Activity返回过来的值
- switch (resultCode) {
- case RESULT_OK:
- // 获取Bundle对象
- Bundle returnedBundle = data.getExtras();
- String returnedName = returnedBundle.getString("name");
- et_name.setText(returnedName);
- break;
- default:
- break;
- }
- }
- @Override
- public void onClick(View v) {
- // 取得et_name的值
- String name = et_name.getText().toString();
- Bundle bundle = new Bundle();
- bundle.putString("name", name);
- Intent intent = new Intent();
- intent.setClass(this, Activity_1.class);
- intent.putExtras(bundle);
- // 启动Activity_1
- startActivityForResult(intent, requestCode);
- }
- }
package com.kevin.intent;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;public class Main extends Activity implements OnClickListener{private Button btn_transfer;private EditText et_name;private int requestCode = 1;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);btn_transfer = (Button) findViewById(R.id.button1);et_name = (EditText) findViewById(R.id.editText1);btn_transfer.setOnClickListener(this);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {System.out.println("requestCode--->" + requestCode);// resultCode是第二个Activity返回过来的值switch (resultCode) {case RESULT_OK:// 获取Bundle对象Bundle returnedBundle = data.getExtras();String returnedName = returnedBundle.getString("name");et_name.setText(returnedName);break;default:break;}}@Overridepublic void onClick(View v) {// 取得et_name的值String name = et_name.getText().toString();Bundle bundle = new Bundle();bundle.putString("name", name);Intent intent = new Intent();intent.setClass(this, Activity_1.class);intent.putExtras(bundle); // 启动Activity_1startActivityForResult(intent, requestCode);}}
跳转后的activity
- package com.kevin.intent;
- import android.app.Activity;
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.TextView;
- public class Activity_1 extends Activity implements OnClickListener{
- private Button btn_return;
- private TextView textView;
- private Intent intent;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity1);
- intent = this.getIntent();
- Bundle bundle = intent.getExtras();
- String name = bundle.getString("name");
- System.out.println("name --- >" + name);
- textView = (TextView) findViewById(R.id.tv_receivedname);
- textView.setText("传过来的name值为: " + name);
- btn_return = (Button) findViewById(R.id.btn_return);
- btn_return.setOnClickListener(this);
- }
- @Override
- public void onClick(View v) {
- // 点击返回按钮后,设置返回值
- setResult(RESULT_OK, intent);
- this.finish();
- }
- }
package com.kevin.intent;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;public class Activity_1 extends Activity implements OnClickListener{private Button btn_return;private TextView textView;private Intent intent;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity1);intent = this.getIntent();Bundle bundle = intent.getExtras();String name = bundle.getString("name");System.out.println("name --- >" + name);textView = (TextView) findViewById(R.id.tv_receivedname);textView.setText("传过来的name值为: " + name);btn_return = (Button) findViewById(R.id.btn_return);btn_return.setOnClickListener(this);}@Overridepublic void onClick(View v) {// 点击返回按钮后,设置返回值setResult(RESULT_OK, intent);this.finish();}
}
- IntentDemo3.zip (45.2 KB)
startActivityForResult()相关推荐
- Android开发中使用startActivityForResult()方法从Activity A跳转Activity B出现B退出时A也同时退出的解决办法...
最近一个 App 中用到了 startActivityForResult() 方法,使用的时候却出现了一些问题,比如我在 Activity A 中调用该方法向 Activity B 中跳转,如果 B ...
- android.os.FileUriExposedException:file:///storage/emulated/0/test.txt通过Intent.getData()在应用程序之外公开
本文翻译自:android.os.FileUriExposedException: file:///storage/emulated/0/test.txt exposed beyond app thr ...
- python 替换字符串的方法replace()、正则re.sub()
一.replace()函数 1用字符串本身的replace方法: a = 'hello word' b = a.replace('word','python') print b 1 2 3 二.re. ...
- Scrapy 学习笔记(-)
Scrapy Scrapy 是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓取 )所 ...
- 67)vector的begin() end() 和 front() back()的区别 rbegin() rend()
1) ·············· 2)`````````v1.begin() 和v1.end() 是作为迭代器v1的 第一个位置 和 最后一个元素的下一个位置. `````````````v1. ...
- 转:【CSS/JS学习】如何实现单行/多行文本溢出的省略(...)--老司机绕过坑道的正确姿势...
本文来源:http://www.cnblogs.com/penghuwan/p/6682303.html 引言: 写前端UI的朋友们也许都遇到过这样的问题:我们需要实现这样一个需求,在一个父级元素中隐 ...
- Python中的对象,类,super()函数
对象:(1)外观的特征 (2)正在做的事情 比如:那个穿蓝色衣服的正在打球的帅哥 类:属性(静态的变量)+方法(函数)是对对象的近似 类名约定是以大写字母开始的 类的出现: 是为了使得对象可以进行大 ...
- Python中的super()函数
多路继承的问题 描述: 解决这样的问题Python中可以使用super() super()函数有点: (1)在父类中可以直接的调用未绑定的方法 (2)在确保所有的父类的构造方法都使用了super()函 ...
- 函数assert()详解
函数assert()详解: 断言assert是一个宏,该宏在<assert>中,,当使用assert时候,给他个参数,即一个判读为真的表达式.预处理器产生测试该断言的代码,如果断言不为真, ...
最新文章
- 如何优雅地根治null值引起的Bug!
- 1.8 Java字节流和字符流的区别,如何区分输入流和输出流?
- 正则表达式与神经网络的深度融合
- 锦州财经学校计算机系,锦州一职高与财经学校哪个好
- Zookeeper基于Java 访问-节点权限设置
- java 字谜_计算字谜的出现次数
- linux制作成后台服务,把dotnetcore 控制台app设置成linux后台服务
- 基于金融知识图谱的会计欺诈风险识别方法
- 【Java】浅谈Java的I/O体系
- Tomcat下载及配置(IDEA)
- 铨顺宏RFID:应用超高频RFID技术智能档案管理系统
- java 面单模板_顺丰电子面单JSON请求格式
- c语言 qt 写小游戏,Qt实现Flappy Bird游戏
- Python爬虫进行web 数据可视化挖掘总结和分析
- win10c语言关机,win10如何设置定时关机?
- mysql数据库recover_xxx数据库恢复 mariadb数据库误删除恢复 mysql数据库被黑删库恢复
- MYSQL数据库----删除命令
- 云桌面计算机系统管理,教学虚拟云桌面管理系统解决方案
- 路由器重温——接口配置与管理1
- 矿泉水溴酸盐超标如何解决?除溴酸盐设备有哪些?
热门文章
- PHP爬取企业详情(百度信用)
- POJ1125 Floyd
- 【Linux 内核】编译 Linux 内核 ⑤ ( 查看 .config 编译配置文件 | 正式编译内核 )
- 【数字信号处理】相关函数应用 ( 相关函数应用场景 | 噪声中检测信号原理 )
- 【Groovy】Groovy 扩展方法 ( Groovy 扩展方法引入 | 分析 Groovy 中 Thread 类的 start 扩展方法 )
- 【错误记录】Java 中 ArrayList 排序 ( 使用 Comparator 接口时注意 compare 返回值是 -1 和 +1 )
- 【Flutter】Flutter 布局组件 ( 布局组件简介 | Row 组件 | Column 组件 | SizedBox 组件 | ClipOval 组件 )
- [Spring cloud 一步步实现广告系统] 14. 全量索引代码实现
- oracle操作字符串:拼接、替换、截取、查找
- jsonp解析 html