作用:当aAty跳转之bAty时,需要bAty回传数据,使用startActivityForResult。

相关的函数:

aAty:--跳转至bAty(intent可以传递数据)

void android.app.Activity.startActivityForResult(Intent intent, int requestCode)

bAty:

void android.app.Activity.setResult(int resultCode, Intent data)

aAty:

void android.app.Activity.startActivityForResult(Intent intent, int requestCode)

代码:

aAty:

public class MainActivity extends Activity implements OnClickListener {
private Button bt_jumpAnotherAty; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt_jumpAnotherAty = (Button) findViewById(R.id.bt_jumpAnotherAty);
bt_jumpAnotherAty.setOnClickListener(this);
} @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (resultCode) {
case RESULT_OK:
String result = data.getStringExtra("result");
Log.d("h_bl", result);
break; default:
break;
}
super.onActivityResult(requestCode, resultCode, data);
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_jumpAnotherAty:
Intent intent = new Intent(MainActivity.this, AnotherActivity.class);
startActivityForResult(intent, 0);
break; default:
break;
}
} }

bAty:

public class AnotherActivity extends Activity implements OnClickListener {
private Button bt_setResult; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_another);
bt_setResult = (Button) findViewById(R.id.bt_setResult);
bt_setResult.setOnClickListener(this);
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_setResult:
// 数据是使用Intent返回
Intent intent = new Intent();
// 把返回数据存入Intent
intent.putExtra("result", "My name is h_bolin");
// 设置返回数据
AnotherActivity.this.setResult(RESULT_OK, intent);
// 结束该Aty,这点很重要。
AnotherActivity.this.finish();
break; default:
break;
}
} }

详解:bAty被销毁时 -- finish(),会返回数据。

PS.

1.一般不会在bAty的onCreate()方法写setResult()方法,需要在调用的时候,才会调用。

2.按Back键,Android会自动调用Aty的finish()方法。

3.可以重写onBackPressed()方法,对Back键的事件处理。

String result = data.getStringExtra("reslt");

4.取值时,要name要写对,不然会报以下错误:

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=Intent { (has extras) }} to activity {com.example.startactivityforresultdemo/com.example.startactivityforresultdemo.MainActivity}: java.lang.NullPointerException: println needs a message

startActivityForResult() 中requestCode 和 resultCode 的作用:

使用startActivityForResult(Intent intent, int requestCode)方法打开新的Activity,我们需要为startActivityForResult()方法传入一个请求码(第二个参数)。请求码的值是根据业务需要由自已设定,用于标识请求来源。例如:一个Activity有两个按钮,点击这两个按钮都会打开同一个Activity,不管是那个按钮打开新Activity,当这个新Activity关闭后,系统都会调用前面Activity的onActivityResult(int requestCode, int resultCode, Intent data)方法。

详见:

http://blog.csdn.net/donglynn/article/details/22693835

最新文章

  1. The resource identified by this request is only capable of generating responses with characteristics
  2. node.js整理 05进程管理
  3. sublime text3 快捷键设置
  4. 【转】Linux中如何安装.rpm、.tar、.tar.gz和tar.bz2
  5. JAVA中求解对象所占字节大小
  6. QSettings介绍
  7. bzoj 1089 [SCOI2003]严格n元树(DP+高精度)
  8. ISA TEST Writeup
  9. CentOS在线安装Mysql5.7
  10. [Swift]LeetCode791. 自定义字符串排序 | Custom Sort String
  11. 【Django视图与网址进阶004】
  12. 文件传输协议FTP、SFTP和SCP
  13. ARCore中根据屏幕坐标计算射线的算法
  14. 如何选择稳定的PHP虚拟主机?
  15. ubuntu14的unity desktop显示异常
  16. Linux 下安装 mysql
  17. hosts 位置和功能
  18. js代码的执行顺序及运算
  19. 关于java.lang.NoClassDefFoundError: org/apache/commons/collections/FastHashMap的错误解决办法
  20. symfony注册Twig模板中使用自定义PHP方法

热门文章

  1. charles 踩坑记录
  2. SQL优化之一
  3. codeforces B. Okabe and Banana Trees 结论题
  4. 微信小程序登录状态
  5. Linux 开机自动挂载windows分区
  6. centos python2.6升级到2.7出现的问题
  7. 僵尸进程(zombie process)
  8. 【bzoj2242】计算器
  9. phpstudy2014没有mysqldumpslow.pl及其在性能优化的作用
  10. .NET中类和结构的区别