我已经定义了一个这样的 XX 类:
public class XX extends RelativeLayout {
protected static final boolean DEBUG = true;
public XX(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public XX(Context context, AttributeSet attrs) {
super(context, attrs);
if (DEBUG)
Log.i(this.getClass().getSimpleName(), " ->2"
+ Thread.currentThread().getStackTrace()[2].getMethodName());
//getAttributes(context, attrs);
}
public XX(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
if (DEBUG)
Log.i(this.getClass().getSimpleName(), " ->3"
+ Thread.currentThread().getStackTrace()[2].getMethodName());
//getAttributes(context, attrs);
}
}
在我的代码中我写:
RelativeLayout v = (RelativeLayout) this.findViewById(R.id.switch_TCMyTB);
XX x = (XX) v; //<----- crashes here
但它与作业崩溃。我假设因为 XX 扩展了视图,所以我可以将视图(RelativeLayout)分配给 XX 对象。
但它崩溃了。作业有什么问题?
编辑:
我extends View
改为extends RelativeLayout
. 也View v
改为RelativeLayout v
. 但我仍然得到一个classCastException ..???? 为什么?
尽管
RelativeLayout r = (RelativeLayout) v;
当然工作正常。