Android编程技巧之最佳Activity数据传递
2015-12-25 17:48
441 查看
写一下最近学习的一个很简单的Activity间跳转传递数据的方法,由于在实际开发中(听说而已,目前学生党= =) 接手到一个新项目的几率比较小,
大多数时候都是接手一个旧的项目来进行一些开发维护或者功能添加的工作,然后试想有这么一个场景,你负责的Activity页面,这里假设叫做
SecondActivity,需要其他同事负责的Activity页面传递的数据,这样无非两种解决办法:
1、你自己跑去告诉你的同事,我需要哪两个参数,然后跟同事约定好intent.putExtra()方法中放入什么键,是param_1或者是data_1。。。
2、你的同事跑过来问你需要传递什么数据给你,然后跟你约定好intent.putExtra()方法中放入什么键,是param_1或者是data_1。。。
这两种方式无非都要耗费时间跟人力 (嗯,很有道理) ,有没有什么办法简化这种繁琐的你问我答或者我问你答的操作呢?当然有,往下看。
可以在你负责的SecondActivity中添加一个声明为public static的函数,用于给其他Activity调用以实现界面跳转并传递数据,具体如下:
SecondActivity需要的两个数据data1和data2,即可实现页面跳转和数据传递,如此一来,我们根本不需要向其他同事询问intent传递时使用的
是什么键 (即上面的param_1和param_2) ,因为这是自己提供给其他同事的函数接口,自己用什么键值都可以,其他同事也不用关心需要设置什么
键,只需调用你的接口,选好数据类型对象赋给函数即可,如果公司内部有规定好每个需要数据的Activity 的函数接口命名规则,那就更好了,这样
可以提高工作效率,也减少了同事过来询问你的时间,利人利己啊,神器啊有没有!
最后看下监听的代码跟运行结果:
这是FirstActivity中button的监听事件
同时在SecondActivity的oncreate()函数中用Log.d()打印收到的intent数据
运行程序,首先看到FirstActivity中的button1,我们在后台先设置Log过滤器SecondActivity,然后点击button1,可以看到后台打印出了传递过来的数据
谢谢阅读!
大多数时候都是接手一个旧的项目来进行一些开发维护或者功能添加的工作,然后试想有这么一个场景,你负责的Activity页面,这里假设叫做
SecondActivity,需要其他同事负责的Activity页面传递的数据,这样无非两种解决办法:
1、你自己跑去告诉你的同事,我需要哪两个参数,然后跟同事约定好intent.putExtra()方法中放入什么键,是param_1或者是data_1。。。
2、你的同事跑过来问你需要传递什么数据给你,然后跟你约定好intent.putExtra()方法中放入什么键,是param_1或者是data_1。。。
这两种方式无非都要耗费时间跟人力 (嗯,很有道理) ,有没有什么办法简化这种繁琐的你问我答或者我问你答的操作呢?当然有,往下看。
可以在你负责的SecondActivity中添加一个声明为public static的函数,用于给其他Activity调用以实现界面跳转并传递数据,具体如下:
public static void infoTransport(Context context, String data1, String data2) { Intent intent = new Intent(context, SecondActivity.class); intent.putExtra("param_1", data1); intent.putExtra("param_2", data2); context.startActivity(intent); }上面的函数将Activity跳转以及intent数据传递封装起来,其他Activity只需通过SecondActivity类名传递三个参数,分别是上下文对象context,
SecondActivity需要的两个数据data1和data2,即可实现页面跳转和数据传递,如此一来,我们根本不需要向其他同事询问intent传递时使用的
是什么键 (即上面的param_1和param_2) ,因为这是自己提供给其他同事的函数接口,自己用什么键值都可以,其他同事也不用关心需要设置什么
键,只需调用你的接口,选好数据类型对象赋给函数即可,如果公司内部有规定好每个需要数据的Activity 的函数接口命名规则,那就更好了,这样
可以提高工作效率,也减少了同事过来询问你的时间,利人利己啊,神器啊有没有!
最后看下监听的代码跟运行结果:
这是FirstActivity中button的监听事件
private void buttonDeal() { button = (Button) findViewById(R.id.button_1); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SecondActivity.infoTransport(FirstActivity.this, "Hello", "Hi"); } }); }
同时在SecondActivity的oncreate()函数中用Log.d()打印收到的intent数据
<span style="white-space:pre"> </span>Intent intent = getIntent(); String data1 = intent.getStringExtra("param_1"); String data2 = intent.getStringExtra("param_2"); Log.d("SecondActivity", "Intent result:"+data1+" "+data2);
运行程序,首先看到FirstActivity中的button1,我们在后台先设置Log过滤器SecondActivity,然后点击button1,可以看到后台打印出了传递过来的数据
谢谢阅读!
相关文章推荐
- RecyclerView-FlexibleDivider—RecyclerView分割线的Android类库
- AndroidStudio怎样导入jar包
- sharesdk for android集成调试的几个问题
- [转]Android之Context和Activity互相转换
- Android开发之触摸事件处理机制详解
- Battery workflow in Android 2.3
- Android Activity 和 ViewGroup中事件触发和传递机制
- Android开发学习:[15]自动导入包
- Android事件机制:事件传递和消费
- android selector 使用中常见的问题
- 总结android日常用到的注意点
- 安卓绘制五角星
- Android 日历 签到
- Fragment findViewById为null Android(八-1)
- Android自动化测试之Monkeyrunner使用方法及实例
- 学习android studio的一些记录
- android 身份证号的4到11位用*显示怎么做
- Android版添加phonegap--Crosswalk插件教程
- Android Studio内存优化
- Android 判断字符串是不是是身份证、邮箱、银行卡、手机号、中文 1