从ID转换customView

时间:2013-09-30 21:15:18

标签: android view casting classcastexception

问题:

这是我的情况:

public class customView extends View {
    myView = new RelativeLayout(...);
    //...
    public customView getLayout() {
        return (customView) myView;
    }

    public void myFunction(){}
}

然后,如果我这样做:

customView cv = new customView();
cv.setId(100);
// mainLayout si riferisce alla View principale
mainLayout.addView(cv.getLayout());

在我尝试获取之前制作的新“customView”时,它会返回ClassCastException。

( (custonView) mainLayout.findViewById(100) ).myFunction();

它说我无法在customView

中投射RelativeLayout

我的customView使用一些新函数来表示RelativeLayout:当我创建它时,一个计时器在嵌入的TextView中启动。

当我回想起这个对象时,我应该能够停止定时器计时器(停止计时器功能写入并完全工作)。

谢谢大家

答案:

public class customView extends View {
    public void customView(Context context){
        myView = new RelativeLayout(...);
        **addView(myView);**
    }
    //...
    //public customView getLayout() {
    //    return (customView) myView;
    //}

    public void myFunction(){}
}

并用

调用它
customView cv = new customView();
cv.setId(100);
//mainLayout si riferisce alla View principale
//mainLayout.addView(cv.getLayout());
mainLayout.addView(cv);

1 个答案:

答案 0 :(得分:0)

您应该能够在自定义类中扩展RelativeLayout。难道不会让整件事变得更轻松吗?您仍然可以为其添加自定义逻辑。

我认为您的代码中的问题是,您向RelativeLayout添加mainLayout,而不是添加自己的customView