【问题标题】:Cast customView from ID从 ID 投射 customView
【发布时间】:2013-09-30 21:15:18
【问题描述】:

问题:

这是我的情况:

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);

【问题讨论】:

  • 这一行的问题 return (customView) myView;您不能将 View 转换为 RelativeLayout

标签: android view casting classcastexception


【解决方案1】:

您应该能够在您的自定义类中扩展RelativeLayout。它不会让你的整个事情变得更容易吗?您仍然可以为其添加自定义逻辑。

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

【讨论】:

  • 我也尝试扩展RelativeLayout,同样的例外。我想你说的,但是如何添加我的 customView 而不是 RelativeLayout?
  • 在这种情况下,您将添加自定义的 RelativeLayout,不是吗?我不确定这是不是问题...
猜你喜欢
  • 1970-01-01
  • 2016-09-11
  • 2013-07-11
  • 1970-01-01
  • 2017-03-17
  • 2014-05-12
  • 2014-06-16
  • 1970-01-01
  • 2014-08-08
相关资源
最近更新 更多