activity之间传递数据

来源:互联网 发布:仪器信息网 网络讲堂 编辑:程序博客网 时间:2024/05/22 12:23
1、intent.putExtra()//向activity传递数据
Bundle _bundle= getIntent().getExtras()//从activity中获取传递过来的数据

_bundle.get()/getString()...


2、通过全部对象传递数据:getApplication()获取全局对象(可以在全局对象中用map<T,K>存数据)
让自己的类对象成为全局类对象可以继承(extends)Application:
注意:要让程序启动时创建自己定义的类为全部对象时可以在 AndroidManifest.xml中配置:Android:name="我们的继承Application的全局类名(包括包名)"
public class myApplicationApp extends Application
{。。。}
获取全局对象:getApplication()
activity间传递数据:
intent.putExtra()
getIntent.getExtras()
intent:实现组件之间的通讯(感觉像是上下文的作用,或者是MSG结构体的作用)
intent.setClass(调用者,被调用者)


Base64类:

这个类跟C#中的Encoding类一样,是进行编码、解码的,可将字符串转换成字节数组,或者将字节数组转换成字符串,且可指定编码解码的方式(ascii、unicode、utf-8、gb2312)


传递复杂数据类型:

    intent.putExtra()如果要传递类的话,类必须是可序列化的,所以可以让类实现(implements)Serializable(序列化 )接口:

        传递方: _intent.putExtra("string",serialiable);

        接收方:getIntent().getSerialableExtra("string");
    intent另一个传递类的方法是 让类实现(implements)parcelable接口:

             类中重写writeToParcel(Parcel dest,int flags)//把要传递过去的数据写到参数dest中

                                    {          dest. writeInt(25);       dest.writeString("string");          }

          类中定义 public  static  final  Creator<Order> CREATOR =new  Creator<Order>(){     }

         传递方:intent.putExtra("string",order);

         接收方:Order  order  =  getIntent().getParcelableExtra("string");

从Activity中返回数据:
用startActivityForResult()启动要执行任务的那个activity,任务执行完后执行任务的那个activity调用setResult(resultCode,intent)  //intent里putExtra()放入要返回的数据
在前一个activity中的回调函数onActivityResult()中就接收到结果了
finish()//关闭当前activity
0 1