我从这里获取文本视图实例:
TextView date = null;
try {
date = (TextView) getLayoutInflater().inflate(
R.layout.some_textview, null);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
我创建了自定义textview:
public class MyTextView extends TextView{
public MyTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyTextView(Context context) {
super(context);
}
}
现在我要投射那些:
MyTextView my = (MyTextView)date;
我得到了这个的例外:
java.lang.ClassCastException: android.widget.TextView cannot be cast to com.myapp.name.MyTextView
那应该怎么做?
感谢。
修改 的
如果我将date
声明为MyTextView
,仍然会得到相同的异常,那么我的xml是some_textview:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="This is a template for date text view"
/>
答案 0 :(得分:4)
您的XML布局R.layout.some_textview
资源是否正确?
不要使用
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
...
/>
您必须在XML中使用自定义类:
<com.your.package.MyTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
...
/>
课程路径是正确的非常重要!
答案 1 :(得分:2)
您可以直接在XML中使用MyTextView,而不是<TextView />
使用<com.myapp.name.MyTextView />
然后在您的代码中使用com.myapp.name.MyTextView而不是TextView。
答案 2 :(得分:0)
您应将date
声明为MyTextView
。您试图将TextView对象强制转换为TextView的子类,但该对象不是子类类型的实例(see example)。
答案 3 :(得分:0)
尝试使用如下:
MyTextView date = null;
try {
date = (MyTextView) getLayoutInflater().inflate(
R.layout.some_textview, null);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}