第十章 货币实验:第2部分
重点关注MainActivity的功能并完成该App;使用ArrayAdapter把字符串数组绑定到选择列表;使用Android Srudio把视图行为的处理代理到包含他们的Activity;学习如何使用共同偏好以及资源;学习Android中的并发,尤其是如何使用AsynsTask;修改布局并使用Android Studio生成可绘制资源。
10.1定义MainActivity的成员
首先在MainActivity类中定义activity_main.xml布局文件中对应视图的引用,然后将对象赋值给它们。
*我们仅在MainActivity里面为activity_main.xml中那些之前已经分配了ID的视图定义引用。
*setContentView(R.layout.activity_main)语句会使用activity_main.xml中包含的视图进行填充。
*在Android中,单词inflate表示当Android遍历activity_main.xml布局中定义的视图时,它会将每个视图初始化为对上的Java对象。
*如果View对象有ID,那么Android将会把对象的内存位置与其ID关联起来。
*这种联系可以在自动生成的名为R.java的文件中找到,它是资源和Java源文件的桥梁。
在把布局及其所有视图填充到内存空间中以后,通过调用findViewById()方法并传入ID值可以把这些对象赋值给我们之前定义的引用。findViewById()方法返回一个View兑现个,它是Android中所有View和ViewGroup的祖先;而这也是我们需要将其返回值转换成适当View子类的原因。
10.2从bundle中解压出货币代码
10.3创建选项菜单
app:showAsAction属性决定了菜单项的位置。将此属性设置为never,表示此菜单项永远不会出现在操作栏上,而是总出现在溢出菜单中。(溢出菜单有操作栏右侧三个竖直的点来表示)
android:orderInCategory用于设置菜单项的次序。Android中的约定是使用100的倍数,例如可以用250在200和300之间插入一个新的菜单项。orderInCategory属性必须是整数,因此如果开始时使用诸如2和3这样的连续值,那么将会没有插入中间值的空间,而我们也不得不重新排序整个集合。
10.4实现选项菜单行为
要求用户授权并获得对设备网络状态的访问权限。
10.5创建spinner_closed布局
为处于关闭状态的选择列表创建布局
10.6将mCurrencies绑定到选择列表
我们需要将mCurrencies绑定到选择列表。uao实现此功能,我们将使用一个名为ArrayAdapter的类。
ArrayAdapter构造函数接受三个参数:上下文、布局和一个数组
10.7将选择列表行为代理给MainActivity
Java事件模型极其灵活。
我们可以将时间的处理代理到实现了相应监听器接口的任意对象。
如果视图是唯一的,那么将其行为处理代理到一个匿名内部类是有意义的。
然而如果布局中包含相同类型的多个视图,比如Currencies App中包含两个或更多个选择列表这种情况,那么将这些视图的处理代理到包含它们的类通常是更为简便的方法。
10.8创建偏好管理器
可以将共同偏好保存在用户设备上的文件中。这种文件是序列化的哈希表