Java 活动和视图的findViewById的超级类型
您可以在Java 活动和视图的findViewById的超级类型,java,android,android-activity,android-view,Java,Android,Android Activity,Android View,您可以在View上调用findViewById,也可以调用Activity。现在我需要根据具体情况对这两种情况调用它。我希望避免类型检查或空检查,并使用其中任何一种,但希望在传递参数时将其转换为一种类型 invikefindViewById是否有类似于公共接口的东西?因为从源代码看,它似乎只是为两者实现的,没有连接到超级类或接口。您可以在活动中执行的操作是获取装饰视图,您可以在该视图上调用findViewById public void myMethodRequiringView(View vi
View
上调用findViewById
,也可以调用Activity
。现在我需要根据具体情况对这两种情况调用它。我希望避免类型检查或空检查,并使用其中任何一种,但希望在传递参数时将其转换为一种类型
invike
findViewById
是否有类似于公共接口的东西?因为从源代码看,它似乎只是为两者实现的,没有连接到超级类或接口。您可以在活动中执行的操作是获取装饰视图,您可以在该视图上调用findViewById
public void myMethodRequiringView(View view) {
view.findViewById(...);
}
在活动中
:
myMethodRequiringView(getWindow().getDecorView());
在片段中
:
myMethodRequiringView(rootView);
如果您查看activity
和Window
Android类的源代码,您会发现这正是activity.findViewById
中所称的。不,没有通用接口。我想不出你需要它的任何理由。你到底想干什么?而且,即使有一个不能阻止空检查的需要。@Gabeschen是的,很好。我使用片段来显示片段中的内容以及活动。重复使用相同的布局。在每种情况下,我都需要使用片段视图或活动来查找元素。但我想还有第三种方法,就是回到白板上。
public void myMethodRequiringView(View view) {
view.findViewById(...);
}