Chinese, Simplified subtitles

← Find View by Id - Solution

Get Embed Code
13 Languages

Showing Revision 2 created 07/27/2016 by Udacity Robot.

  1. 先看第一个
  2. 公布答案前我会先复制这段代码
  3. 然后粘贴到 Android Studio 中
  4. 看看会出现什么错误
  5. 现在你要完成这个测试 不需要借助 Android Studio
  6. 只看代码就能解决
  7. 然后写下你的答案
  8. 所以 用不用 Android Studio 都可以
  9. 为了调通代码 我创建了一个新的项目
  10. 然后修改 activity_main 布局文件
  11. 为布局文件添加 View 并添加需要被引用的 ID
  12. 我甚至不太确定这个布局会是什么样子
  13. 我只是把这些带有相应 ID 的视图放在这
  14. 这样 代码就调通了
  15. 把第一个代码粘过来 它报错了
  16. 不能解析 setText 方法
  17. 如果你还记得上一个视频
  18. 我提到过 setText 是一个 TextView 方法
  19. 也就意味着你只能用 TextView 对象调用这个方法
  20. 在这里 是用 nameTextView 调用的
  21. nameTextView 声明为一个 View对象
  22. 我们需要把它变成 TextView 对象
  23. 又报错了 说类型不兼容
  24. 我们需要一个 TextView 类型
  25. 但这是一个 View 的对象
  26. 因为 findViewByID 的返回值是 View 类型
  27. 而左边需要一个 TextView 类型
  28. 意味着我们必须加上这个
  29. 把 findViewById 返回的 View 转化成 TextView
  30. 然后我们把这个整体保存起来
  31. 存到左边 nameTextView 变量里
  32. 不报错了 然后在 TextView 里设置文本为 Laura
  33. 错误在第一行 把正确的代码写在下边
  34. 我们需要把 View 格式转换成 TextView 格式
  35. 然后保存在 nameTextView 变量里
  36. 这样就可以调用 nameTextView.setText 方法了
  37. 这是一个 TextView 方法
  38. 来看第二个
  39. 把代码复制粘贴到 Android Studio 中
  40. 就是这
  41. 第一行看起来是正确的
  42. 但第二行被标记为红色了
  43. 它说类型不兼容
  44. 应该是字符串类型 但这却是整型
  45. 为了更好地理解
  46. 我们应该查查 TextView 文档里的 getMaxLines 方法
  47. 在 TextView 文档里 我来搜一下
  48. getMaxLines 方法
  49. 在这
  50. 这里不需要输入参数
  51. 返回值是整型
  52. 这就是 Android studio 报错的原因 因为这个方法
  53. 返回值是整型
  54. 但我们却想把它存进 String 变量中
  55. 所以我需要把这个数据类型转换为 int
  56. 程序调通了
  57. 这个方法的返回值是一个整数
  58. 所以我们可以把它存到 maxLines 变量里了
  59. 警告还存在
  60. 说 maxLines 变量从来没被使用过
  61. 但这只是一个代码片段
  62. 我想如果是在一个常规应用里
  63. 我们稍后会用到这个变量
  64. 错误在第二行 这里是更新后的代码
  65. 也就是说这个方法的返回值
  66. 应该是一个整型
  67. 来看第三个
  68. 这是代码
  69. 我把它们粘到 Android Studio 中
  70. 报错说类型不匹配
  71. 需要的是 ImageView 类型 但这是一个 View 类型
  72. 这个错误跟之前的 TextView 很类似
  73. 方法返回值是 View 类型
  74. 在左边这 我们却想存到 ImageView 类型中
  75. 我们需要把 View 类型转化成 ImageView 类型
  76. 这是有效的 因为带有 icon ID 的视图是 ImageView
  77. 所以可以把它转化成 ImageView 格式
  78. 既然右边也是 ImageView 格式
  79. 我们就能把它存到左边的变量里了
  80. 这个变量就是 ImageView 格式 非常匹配
  81. 错误修复了
  82. 接下来 我们可以调用 ImageView 格式的方法了
  83. 也就是 SetImageResource 方法 用 IconImageView 对象调用
  84. 报错说无法解析这个 logo 符号
  85. 因为我在应用里没有添加名字为 logo 的图片
  86. 如果我加上 错误就会消失 代码就正确了
  87. 这是转化格式后正确的代码
  88. 现在看第四个
  89. 把代码粘到 Android Studio 里 竟然没有报错
  90. 代码想要找到带有 id 为 title的 View
  91. 并且返回一个视图类型 然后存到 textView 变量里
  92. textView 是视图格式
  93. 和右边的格式一样 所以代码没报错
  94. 下一行 这有一个对象 是 View 类型
  95. 我们正在调用一个 setVisibility 方法
  96. 方法有一个输入参数 View.GONE
  97. 我可以查阅一下文档来弄懂为什么是这样的
  98. 在 View 类的文档里 搜索一下
  99. setVisibility 方法
  100. 可以看到 setVisibility 是 View 类中的一个方法
  101. 有一个输入 一个可见状态的整数
  102. 它可能的值有 VISIBLE INVISIBLE 还有GONE
  103. 因为 setVisibility 是 View 类中的方法
  104. 这是一个有效的调用
  105. 没有必要转化成 TextView 格式
  106. 因为我们调用的方法是 View 类的
  107. 如果我们想要调用 TextView 类的方法
  108. 就需要类型转换了
  109. 对于这个问题 你应该写没错误 因为
  110. setVisibility 是一个 View 类的方法 可以保持对象原有类型
  111. 这些问题不简单
  112. 没答对也没关系
  113. 接下来 你还有机会做更多的练习