Android:如何获取父视图的ID?

Android:如何获取父视图的ID?,android,Android,View.getRoot()返回View,因此我们可以通过使用getResourceName(View.getId())轻松确定哪个是根视图 View.getParent()..,虽然我希望它也会返回父对象View,但实际上只返回ViewParent的一个实例,该实例似乎没有多少有用的方法/字段。真糟糕 那么,有没有办法知道家长的ID?我相信视图的父视图也是视图,因此它应该有中间字段 我真想知道为什么谷歌不让View.getParent()只返回View。只有当视图之外的其他对象可能是父对象时,

View.getRoot()
返回
View
,因此我们可以通过使用
getResourceName(View.getId())
轻松确定哪个是根视图

View.getParent()
..,虽然我希望它也会返回父对象
View
,但实际上只返回
ViewParent
的一个实例,该实例似乎没有多少有用的方法/字段。真糟糕

那么,有没有办法知道家长的ID?我相信
视图
的父视图也是
视图
,因此它应该有中间字段


我真想知道为什么谷歌不让View.getParent()只返回
View
。只有当
视图
之外的其他对象可能是父对象时,它才有意义。据我所知,它仅限于
视图
及其子类。

视图父对象
只是任何可以有子对象的视图实现的接口。大多数情况下,您返回的类都是
视图组的实例,如
LinearLayout
RelativeLayout
。我不太清楚你说的“name”是什么意思,但是如果你想得到类名,你可以像往常一样:
view.getParent().getClass().getName()
父视图不一定是
视图的状态:

公共最终视图父对象getParent()

API级别1中添加的获取此视图的父级。请注意 父视图是视图父视图,不一定是视图

返回此视图的父级


但是,的所有实现都继承自
视图
。这应该是一个设计决策,使用
ViewParent
接口将父视图与
视图解耦,尽管SDK中的所有实现都是视图。

首先尝试强制转换它。例如,如果要获取id的视图的父视图是TableRow,则执行以下操作:

((TableRow)View.getParent()).getID()

View.getId()返回视图的名称和View.getClass().getName()重新运行视图类型的名称如果要获取ID,需要首先将其强制转换为
视图组。请注意,它不是100%安全的,因为它也可以是一个
ViewRootImpl
,尽管我怀疑您在实践中是否能做到这一点。所以
((视图组)view.getParent()).getId()