我有一个简单的应用程序,它将有一堆 EditTexts 采用数值,以及它们之间的各种计算。就像一个单位转换工具。
因此,我将 CalcField 定义为 EditText 的子类,以用作仅包含浮点值的字段,并带有一些额外的方法,例如:
package com.example.ex1;
import android.content.Context;
import android.widget.*;
public class CalcField extends EditText {
// no idea why this is needed. without it i'm told an explicit constructor needed.
public CalcField(Context c) {
super(c);
}
public void setValue(float d) {
setText(String.valueOf(d));
}
public float getValue() {
return Float.valueOf(getText().toString());
}
}
==
在我的布局中,我定义了一个字段 X,如下所示:
<EditText
android:id="@+id/X"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="numberDecimal" />
在我的主要活动中,我尝试从我的布局中获取该字段,如下所示:
CalcField fieldX = (CalcField) findViewById(R.id.X);
这给出了一个我不明白的类转换异常:
07-16 21:23:49.049: E/AndroidRuntime(1429): FATAL EXCEPTION: main
07-16 21:23:49.049: E/AndroidRuntime(1429): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.ex1/com.example.ex1.MainActivity}: java.lang.ClassCastException: android.widget.EditText cannot be cast to com.example.ex1.CalcField
07-16 21:23:49.049: E/AndroidRuntime(1429): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
谁能告诉我为什么我不能做这个简单的类型转换?
提前致谢