为什么和示例中的类型转换很重要?

时间:2017-10-21 17:00:29

标签: android

它似乎运行良好,但我只是想知道为什么当我尝试实现类型转换时它会显示错误。

EG。当ratingBar被类型转换为(RatingBar)并且editText被强制转换为(EditText)时。

有什么建议吗?指针?

package com.example.benmohammad.contacts;


import android.app.Activity;
import android.widget.EditText;
import android.widget.RatingBar;

class StudentFormViewHelper {


 private final Activity activity;

 public StudentFormViewHelper(Activity activity) {

  this.activity = activity;
 }

 private String getName() {

  return getTextFieldValue(R.id.student_form_name);


 }
 private String getTextFieldValue(int fieldId) {

  EditText field = activity.findViewById(fieldId);
  String value = field.getText().toString();
  return value;
 }
 private String getAddress() {
  return getTextFieldValue(R.id.student_form_address);
 }
 private String getPhoneNumber() {
  return getTextFieldValue(R.id.student_form_phonenumber);

 }
 private String getWebsite() {
  return getTextFieldValue(R.id.student_form_website);
 }
 private String getEmail() {
  return getTextFieldValue(R.id.student_form_email);

 }

 public Student createAStudent() {
  return new Student(getName(), getAddress(), getPhoneNumber(), getWebsite(), getEmail(), getGrading());
 }

 private double getGrading() {
  RatingBar rating = activity.findViewById(R.id.student_form_grading);
  return rating.getRating();
 }
}

1 个答案:

答案 0 :(得分:1)

对XML中声明的UI组件进行类型转换很重要,因为如果要访问这些组件,则使用findViewById()返回View。所以说你正在使用EditText,如果你没有将activity.findViewById("my_edit_text")的返回视图转换为EditText,那么你将使用View并且可能会某些您无法接听或致电的行为或方法。您似乎不太可能首先将EditText设置为View并看到一些错误。

相关问题