次のようなクラス 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 は View を拡張するため、ビュー (RelativeLayout) を XX オブジェクトに割り当てることができると思います。
しかし、それはクラッシュします。割り当ての何が問題になっていますか?
編集:
に変更extends View
しましたextends RelativeLayout
。View v
にも変更RelativeLayout v
。しかし、まだclassCastExceptionが発生します..???? なんで?
その間
RelativeLayout r = (RelativeLayout) v;
確かにうまくいきます。