博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Api demo源码学习(9)--App/Activity/Receive Result --Activity间传递数据
阅读量:5339 次
发布时间:2019-06-15

本文共 3601 字,大约阅读时间需要 12 分钟。

本节演示了父Activity跳转到子Activity后,接收子Activity传递回的数据。需要注意在Manifest.xml中注册子Activity。

基本步骤
1)在父Activity这边,Activity跳转时调用startActivityForResult方法,然后重写onActivityResult()方法用于接收子Activity传回的数据。
2)在子Activity这边,调用setResult()函数设置返回值。
 
具体解释见代码:
父Activity  ReceiveResult.java:
1 public class ReceiveResult extends Activity {
2 @Override 3 protected void onCreate(Bundle savedInstanceState) {
4 super.onCreate(savedInstanceState); 5 setContentView(R.layout.receive_result); 6 7 mResults = (TextView)findViewById(R.id.results); 8 9 mResults.setText(mResults.getText(), TextView.BufferType.EDITABLE); 10 Button getButton = (Button)findViewById(R.id.get); 11 getButton.setOnClickListener(mGetListener); 12 } 13 14 @Override 15 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
16 // 如果有多个子Activity都返回数据的话,可以用requestCode来区分是哪个子Activity返回的数据,但本例中只有一个Activity. 17 if (requestCode == GET_CODE) {
18 Editable text = (Editable)mResults.getText(); 19 20 // 如果子Activity启动失败或者没有传回参数,则resultCode就为RESULT_CANCELED 21 if (resultCode == RESULT_CANCELED) {
22 text.append("(cancelled)"); 23 24 // Our protocol with the sending activity is that it will send 25 // text in 'data' as its result. 26 } else {
27 text.append("(okay "); 28 text.append(Integer.toString(resultCode)); 29 text.append(") "); 30 if (data != null) {
31 text.append(data.getAction()); 32 } 33 } 34 text.append("\n"); 35 } 36 } 37 38 static final private int GET_CODE = 0; 39 40 private OnClickListener mGetListener = new OnClickListener() {
41 public void onClick(View v) {
42 // 若需获取子Activity传递回来的数值,此处就不再是调用startActivity()函数了,而是调用startActivityForResult()函数, 43 // 参数GET_CODE用来区分是哪个子Activity传回的数据。需要重写onActivityResult()函数。 44 Intent intent = new Intent(ReceiveResult.this, SendResult.class); 45 startActivityForResult(intent, GET_CODE); 46 } 47 }; 48 49 private TextView mResults; 50 }
子Activity  ReceiveResult.java
1 public class SendResult extends Activity  2 {
3 protected void onCreate(Bundle savedInstanceState) 4 {
5 super.onCreate(savedInstanceState); 6 7 setContentView(R.layout.send_result); 8 9 Button button = (Button)findViewById(R.id.corky); 10 button.setOnClickListener(mCorkyListener); 11 button = (Button)findViewById(R.id.violet); 12 button.setOnClickListener(mVioletListener); 13 } 14 15 private OnClickListener mCorkyListener = new OnClickListener() 16 {
17 public void onClick(View v) 18 {
19 // 在Activity finish之前,调用setResult函数,确定本activity返回的值 20 21 setResult(RESULT_OK, (new Intent()).setAction("Corky!")); 22 finish(); 23 } 24 }; 25 26 private OnClickListener mVioletListener = new OnClickListener() 27 {
28 public void onClick(View v) 29 {
30 // To send a result, simply call setResult() before your 31 // activity is finished. 32 setResult(RESULT_OK, (new Intent()).setAction("Violet!")); 33 finish(); 34 } 35 }; 36 }
布局文件比较简单,就不放出了,以上即可。
下一节:

转载于:https://www.cnblogs.com/xutao1988/archive/2011/12/14/2288030.html

你可能感兴趣的文章
c#的const可以用于引用类型吗
查看>>
手动实现二值化
查看>>
What Linux bind mounts are really doing
查看>>
linux top命令详解
查看>>
博弈论小结
查看>>
模拟Post登陆带验证码的网站
查看>>
NYOJ458 - 小光棍数
查看>>
java中常用方法
查看>>
【Programming Clip】06、07年清华计算机考研上机试题解答(个别测试用例无法通过)...
查看>>
canvas动画
查看>>
4,7周围玩家
查看>>
关于webpack升级过后不能打包的问题;
查看>>
vue - 生命周期
查看>>
Python正则表达式
查看>>
Linux进程间通信--命名管道
查看>>
UVa 10970 - Big Chocolate
查看>>
js输出
查看>>
H5多文本换行
查看>>
HAL层三类函数及其作用
查看>>
Odoo 去掉 恼人的 "上午"和"下午"
查看>>