3.2、组件activity_调用、传值和回传

源码地址:https://github.com/ldy1993/ToolforAS.git

在git下载下来的项目中做一下题目。

创建两个activity,一个外部类

然后按照红框中要求,完成代码。

有几个思考问题

1、startActivity()的继承关系?怎么使用快捷键看?

2、startActivityForResult和startActivity()区别?

3、使用onActivityResult这个方法如何使用快捷键快速重写?

4、activity中this的继承关系?

5、对象传递为什么需要序列化?

6、activity的四种启动模式(这个可以不了解,我做项目的时候发现只有在调用其他app界面才会涉及,到时有实际案例在讲)

7、对象中有map如何序列化

答案:

1、使用control+H,startActivity()的继承关系如下

他的顶级父类是context,我们任何一个activity都继承了Context。

因此可以在activity代码中直接调用startActivity

2、startActivityForResult比startActivity多传入一个id,通常可以用于标识启动时谁来启动,比如同一个activity中的不同按钮。

3、control+o。然后输入关键字。当然alt+insert那里也行,我通常都是按这个,记不住那么多

4、如下,其实他就是一个context。

5、这个推荐百度,上面有很多很好的理解,我个人的想法是A activity有个对象,存在某个内存地址,然后传递给B的时候太大了,于是序列化把他转化成字节流。B activity通过反序列化转化成内容,然后在创建一个新的对象,存在新的地址 。赋予刚刚的内容。

6、使用Parcelable,重写反序列化Creator<Transdata> CREATOR和序列化writeToParcel。map可以在序列化里面遍历出来,组成最基础的String int类型,在反序列话中组合,也可以使用writeMap和readMap

//反序列化 
          name = in.readString();
        value = in.readString();
        in.readMap(stringMap,stringMap.getClass().getClassLoader());

//序列化
       dest.writeString(name);
        dest.writeString(value);
        dest.writeMap(stringMap);

记得map需要初始化值,因为a的对象传给b,b是新建一个新的对象,把反序列化的内容给到b中新键的对象,上文中的stringMap不初始化,此时为空,readMap做map.put时,会报空指针异常。

下一节:

3.3、视图view_创建控件view和布局ViewGroup

https://blog.csdn.net/u013636987/article/details/100187354

发布了39 篇原创文章 · 获赞 2 · 访问量 5026

猜你喜欢

转载自blog.csdn.net/u013636987/article/details/100106999