代码之家  ›  专栏  ›  技术社区  ›  Renas

安卓,找个装饰小孩

  •  3
  • Renas  · 技术社区  · 15 年前

    我想知道有没有可能得到一个装饰儿童。例如,如果我有一个decorview对象,并且我知道decorview的子级是一个framelayout,那么有什么方法可以让我只使用framelayout的父级来获取framelayout对象吗?

    显然,我可以用传统的方式使用getViewByID(),但是如果我只想使用父对象,是否可以获取frameLayout对象?

    谢谢,

    1 回复  |  直到 14 年前
        1
  •  1
  •   exhuma    15 年前

    你在说对象继承吗?

    如果是这样的话,那就很简单:铸造它。

    假设您有一个类“foo”,它是“bar”的祖先类(换句话说:bar是foo的“子”类),那么以这个例子为例:

    Foo myFoo = getSomeFoo();
    Bar myBar = (Bar)myFoo;
    

    因此,根据您的问题进行调整:

    View myView = getDecorView();
    FrameLayout myFrameLayout = (FrameLayout) myView;
    

    或:

    FrameLayout myFrameLayout = (FrameLayout) getDecorView();
    

    您应该保护进行此调用的块,因为这将引发 ClassCastException 如果实例由返回 getDecorView FrameLayout (或其直接子类)。只需添加一个try/catch块,或添加一个 throwing 对包含此行的方法的声明。任何最适合你的。