Activity 之间的回调得不到结果
来源:互联网 发布:软件的分类 编辑:程序博客网 时间:2024/06/05 15:17
在开发当中我们有时候需要ActivityA 的值或者变量传输到 ActivityB在B 界面得到A–>B 的内容值,并返回处理结果!这时候我们就可以使用startActivityForResult 进行开启一个新的界面,使用 setResult 进行数据的回传!
startActivity 与 startActivityForResult 启动方式的区别在这里就不作介绍了!
需要注意的是:
1、如果 ActivityB 在清单文件中声明了android:launchMode=”singleInstance”,这样 ActivityA、ActivityB 就不会再同一个栈中,导致setResult(RESULT_OK);失败。
2、this.startActivityForResult(intent, 200);
sourceCode:requestCode If >= 0, this code will be returned in onActivityResult() when the activity exits.
译文:如果> = 0 requestCode,此代码将返回onactivityresult()活动时退出。
3、setResult(resultCode, data); // 设置返回数据,中的 resultCode是否大于0;
代码:
public class MainActivityA extends AppCompatActivity { private TextView tv_info; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { tv_info = (TextView) findViewById(R.id.tv_info); } public void openActivity(View view){ Intent intent = new Intent(this, ActivityB.class); Bundle bundle = new Bundle(); bundle.putInt("age", 24); intent.putExtras(bundle); startActivityForResult(intent, RequestCode.ACTIVITY_REQUETCODE); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { Log.i("wangly","请求码:"+requestCode); Log.i("wangly","返回的结果码:"+ resultCode); if (requestCode == RequestCode.ACTIVITY_REQUETCODE ){ switch (resultCode){ case RequestCode.ACTIVITY_RESULTCODE: String result = data.getStringExtra("result"); sysOutString(result); break; } } super.onActivityResult(requestCode, resultCode, data); } /** * 输出打印结果 * @param object */ private void sysOutString(Object object){ tv_info.setText(object.toString()); Toast.makeText(getApplicationContext(),object.toString(), Toast.LENGTH_LONG).show(); }}
2>ActivityB
public class ActivityB extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second2); TextView textView = (TextView) this.findViewById(R.id.textView); Bundle bundle = getIntent().getExtras(); int age = bundle.getInt("age"); textView.setText("Activity A 传输的年龄:" + age); } public void closeActivity(View view) { Intent intent = new Intent(); intent.putExtra("result", "经过查证你的年龄怎么有问题啊!!!!"); setResult(RequestCode.ACTIVITY_RESULTCODE, intent); finish(); }}
管理请求码、结果码
public class RequestCode { //Activity 请求码 public final static int ACTIVITY_REQUETCODE = 100; //Activity 返回结果码 public final static int ACTIVITY_RESULTCODE = 20;}
控制台结果:
0 0
- Activity 之间的回调得不到结果
- Activity之间返回结果
- Activity与Activity之间的回调
- spilit("|")得不到想要的分隔结果
- Activity之间的回调
- mysql sum()函数怎么得不到正确的结果啊!!!!
- 英语学习而得不到想要的结果思考
- 得不到的
- android activity之间传递参数,获取上一个activity的返回结果
- hive +hbase 得不到返回结果
- activity 之间信息的传递 Intent 回调参数startActivityForResult
- 回调接口实现Activity与Fragment之间的通信
- activity、service、BroadcastReceive之间如何互相通讯,并取回相应的结果
- 关于一个枚举IE表单的DLL,编译无错,但是得不到想到的结果。
- 关于一个枚举IE表单的DLL,编译无错,但是得不到想到的结果。
- 在XSLT的js方法中使用this关键字得不到想要的结果
- java中用split()方法分割字符串--用特殊字符分割得不到想要的结果的情况
- fragment与activity之间的回调,用于数据更新操作(是fragment向activity里传值)
- 博客发起小小讨论:论坛签名到底还有没有作用?
- 对于优化jfinal下拉框的问题
- 判断一个App是否在前台运行(方法超级简单)
- 上传本地项目到github
- 一致性hash理解
- Activity 之间的回调得不到结果
- 关于C中指针的引用,解引用与脱去解引用
- 在Ubuntu16.04下搭建samba,实现linux与windows之间的
- Android 中取得当前时区(以GMT形式)和语言
- javascript面向对象编程
- tomcat8安装和配置
- [剑指offer学习心得]之:二叉树中和为某一值的路径
- javascript 判断 flash 插件是否安装
- IntelliJ IDEA :decompiled.class file bytecode version:52.0(java 8) ,open source file.