android Intent的startActivityForResult()方法
startActivityForResult()
之前学习了利用Intent跳转页面的同时传值,但有的时候需要从跳转到的页面返回所需要的值(如修改了用户信息,需要返回修改的信息),通俗的意思就是A.Activity跳转到B.Activity,在A.Activity中要自动获取到B.Activity返回的数据。
1.介绍几个主要的方法:
MainActivity.this.startActivityForResult(intent1, 1);
第一个参数intent1就不介绍了,第二个参数的值必须要大于等于0,你可以自己设定数值,该值是用来标记你要跳转并返回值的Activity。比如这里我设定的是以就是说明A.Activity跳转到B.Activity的标记为1,若A.Activity跳转到C.Activity
那就不能再设定为1了,可以写除了1意外的所有正整数。
2.onActivityResult(int requestCode, int resultCode, Intent data) 这个方法是返回主activity自动执行的
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 1:
Toast.makeText(MainActivity.this,
"这是从第一个activity返回的数据---->>" + data.getStringExtra("text"),
Toast.LENGTH_LONG).show();
break;
case 2:
Toast.makeText(MainActivity.this,
"这是从第二个activity返回的数据---->>" + data.getStringExtra("text"),
Toast.LENGTH_LONG).show();
break;
}
}
这个方法就是用来处理从哪张Activity返回的,并处理返回来数据。
requestCode:就是之前在主界面的.startActivityForResult的第二个参数值,通过判断requestCode就可以知道是哪张页面返回回来的
resultCode: 根据它来判断返回页面所需要的不同操作
Intent : 就是从子页面返回回来的Intent
3.setResult(resultCode, data)
setResult(1, intent1)
这里的1就对应到onActivityResult()方法中的resultCode
intent1 对应onActivityResult()方法中的data, 也就是要返回主Activity所需要处理的Intent
4.主要的方法介绍完以后就介绍下源代码:
MainActivity:
public class MainActivity extends Activity implements OnClickListener {
private Button btn1;
private Button btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1 = (Button) findViewById(R.id.btn1);
btn1.setOnClickListener(this);
btn2 = (Button) findViewById(R.id.btn2);
btn2.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn1:
Intent intent1 = new Intent();
intent1.setClass(MainActivity.this, OneActivity.class);
MainActivity.this.startActivityForResult(intent1, 1);
break;
case R.id.btn2:
Intent intent2 = new Intent();
intent2.setClass(MainActivity.this, TwoActivity.class);
MainActivity.this.startActivityForResult(intent2, 2);
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 1:
Toast.makeText(MainActivity.this,
"这是从第一个activity返回的数据---->>" + data.getStringExtra("text"),
Toast.LENGTH_LONG).show();
break;
case 2:
Toast.makeText(MainActivity.this,
"这是从第二个activity返回的数据---->>" + data.getStringExtra("text"),
Toast.LENGTH_LONG).show();
break;
}
}
}
MainActivity.java
OneActivity:
public class OneActivity extends Activity {
private EditText edit;
private Button submit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_one);
edit = (EditText) findViewById(R.id.editOne);
submit = (Button) findViewById(R.id.btnSubmitOne);
submit.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent1 = new Intent();
intent1.putExtra("text", edit.getText().toString().trim());
OneActivity.this.setResult(1, intent1);
OneActivity.this.finish();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.one, menu);
return true;
}
}
OneActivity.java
TwoActivity:
private EditText edit;
private Button submit; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_two);
edit = (EditText) findViewById(R.id.editTwo);
submit = (Button) findViewById(R.id.btnSubmitTwo);
submit.setOnClickListener(new Button.OnClickListener() { @Override
public void onClick(View v) {
Intent intent1 = new Intent();
intent1.putExtra("text", edit.getText().toString().trim());
TwoActivity.this.setResult(2, intent1);
TwoActivity.this.finish();
}
}); } @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.two, menu);
return true;
} }
TwoActivity.java
对应的XML文件就不贴出来了,子页面就一个EditText 和 Button
源码下载:源码
android Intent的startActivityForResult()方法的更多相关文章
- Android:通过startActivityForResult方法来得到Activity的回传值
在一些情况下,我们通过 A activity跳转到 B activity上,这时希望 A activtiy能从 B activity上得到一些返回值,这个时候我们就不能使用startActivity方 ...
- 从零开始学android开发-详细谈谈intent的startActivityForResult()方法
1.两种实现activity跳转的方法 实现activity的跳转主要有两种方法,startActivity()和startActivityForResult();例如activity A跳转到act ...
- intent的startActivityForResult()方法
/******************************************************************************************** * au ...
- Sqlite操作的一些关键类的官方说明与Intent的startactivityforresult方法
Intent: 该功能可以用于通过intent来跳转界面时候传递信号给原理的页面,以便做出一些处理: sqlite的使用: 该方法得到的sqlitedatabase可读可写,而getreadabled ...
- 浅谈Android中的startActivityForResult和setResult方法
引言 我们知道,如果想打开一个新的Activity我们可以使用startActivity方法.今天我们介绍的startActivityForResult不仅可以打开全新的Activity,而且当新的A ...
- Android Intent的几种使用方法全面总结
Intent应该算是Android中特有的东西.你能够在Intent中指定程序要运行的动作(比方:view,edit,dial),以及程序运行到该动作时所须要的资料.都指定好后,仅仅要调用startA ...
- android intent打开各种文件的方法
android intent打开各种文件的方法 1./** * 检测是否安装了某个软件 * * @param pkgName "com.bill99.kuaishua" ...
- android Intent介绍
Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 ...
- Android Intent Flags
Intent,顾名思义,即意图,通常用它来启动一个应用程序组件( Activity, Service, 或者 BroadCast Receiver ).在启动一个新的 Activity 时,可以通过给 ...
随机推荐
- (转)Mac OS X写了个rm时将文件放入回收站的小工具
上次由于公司里机器要面临重装,开始仓皇地将Mac本里的文件scp到我的台式机上.忙乱之中本来要删除一个无用的文件夹的,结果用rm -rf的时候tab了一下,补全出来的文件都没看清就按下了回车,毫无疑问 ...
- RBAC(Role-Based Access Control,基于角色的访问控制)
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色- ...
- MornUI 源码阅读笔记
1. label的mouseChildren属性为true,但label本身是不需要监听textfield的任何事件的, 个人猜测是为了给TextInput, TextArea用的,因为后两者需要监听 ...
- 通过 XtraBackup 实现不停机不锁表搭建主从同步
简介 Xtrabackup是由 Percona 开发的一个开源软件,可实现对 InnoDB 的数据备份,支持在线热备份(备份时不影响数据读写).备份时,Xtrabackup 会将 Master 的 b ...
- Ruby on rail 开发准备
下载安装Instant Rails ,该软件包中包含了Ruby,Rails,Apache(HTTP服务器软件),MySql,并且配置均可自动完成.完成安装后就可以拥有一个完整的Rails开发环境.下载 ...
- MySQL与Oracle 差异比较之四条件循环语句
循环语句 编号 类别 ORACLE MYSQL 注释 1 IF语句使用不同 IF iv_weekly_day = 'MON' THEN ii_weekly_day := 'MON';ELS ...
- 线上redis服务内存异常分析。
项目中,新增了一个统计功能,用来统计不同手机型号的每天访问pv,看了下redis2.6有个setbit的功能,于是打算尝尝鲜把 redis从2.4更新到了2.6 因为是租了vps.服务器的内存只有4g ...
- pdm 中怎么修改表的Name值时使Code值不变
修改方法:PowerDesign中的选项菜单里修改,在[Tool]-->[General Options]->[Dialog]->[Operating modes]->[Nam ...
- php 在线 mysql 大数据导入程序
1 <?php header("content-type:text/html;charset=utf-8"); error_reporting(E_ALL); set_tim ...
- 自学Java过程
由于之前判断失误,其实也不应该说失误吧,自己脱产花了几个月来啃C,现在基本上算是啃完了吧,之所以说失误是因为:没有找到跟C有关的适合我的工作!!! 本来的打算是先把基础搞定然后去找找看有没有肯收留打杂 ...