任何人都可以解释 上下文和视图 之间的区别吗?我们什么时候去上下文或查看?在大多数程序中,我发现上下文或视图被传递给某些方法,将上下文或视图传递给方法的实际需要是什么?
答案 0 :(得分:16)
这是一个奇怪的问题。 View描述了你的ui的一个元素。它可以有onClickListeners,属性等。但是每个视图都是在某些上下文中创建的,通常是Activity的上下文。
Context本身就像你的代码执行的环境。它可以访问ui(如果它是一个活动),它可以包含一些全局数据(应用程序上下文),并且可以访问资源(所有的上下文)。此外,上下文允许您执行常见的Android操作,如广播意图,启动活动和服务。
因此,当您想要对特定视图执行某些操作时,应该传递视图。 当您需要访问资源,全局数据或ui上下文或启动其他Android组件时,将传递上下文。
答案 1 :(得分:0)
我们需要了解View
的构造方式和Context
是什么。
View
具有三个构造函数,它们全部使用Context
作为参数。
在Activity,
中,如果以编程方式对view
进行了夸张,而在XML中,view
则通过使用View
对LayoutInflater
进行了夸张。
LayoutInflater
以Context
作为参数并将其内部保存在类级别字段中。
LayoutInfater layoutinflater = LayoutInflater.from(this);
其中“ this
”是Activity
实例。
inflater
使视图膨胀时,即:
inflater.inflate(R.id.some_view, parent, null)
,
它将内部保存的context
字段传递给View
的构造函数。
View
始终以Context
作为参数,这很明显,因为视图存在于Context
中,即Activity
。
要回答您的问题,当需要将context
传递给本身在Activity
中的方法时,可以编写“ this
”。如果方法不在Activity
中,并且您需要传递Context
,那么请记住,以View
为参数的Context
将对象引用保存在类级别中领域。我们可以通过编写view.getContext()
获得该对象引用。