它似乎运行良好,但我只是想知道为什么当我尝试实现类型转换时它会显示错误。
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();
}
}
答案 0 :(得分:1)
对XML中声明的UI组件进行类型转换很重要,因为如果要访问这些组件,则使用findViewById()
返回View
。所以说你正在使用EditText
,如果你没有将activity.findViewById("my_edit_text")
的返回视图转换为EditText
,那么你将使用View
并且可能会某些您无法接听或致电的行为或方法。您似乎不太可能首先将EditText
设置为View
并看到一些错误。