上下文与观点

时间:2011-05-03 09:29:52

标签: android

任何人都可以解释 上下文和视图 之间的区别吗?我们什么时候去上下文或查看?在大多数程序中,我发现上下文或视图被传递给某些方法,将上下文或视图传递给方法的实际需要是什么?

2 个答案:

答案 0 :(得分:16)

这是一个奇怪的问题。 View描述了你的ui的一个元素。它可以有onClickListeners,属性等。但是每个视图都是在某些上下文中创建的,通常是Activity的上下文。

Context本身就像你的代码执行的环境。它可以访问ui(如果它是一个活动),它可以包含一些全局数据(应用程序上下文),并且可以访问资源(所有的上下文)。此外,上下文允许您执行常见的Android操作,如广播意图,启动活动和服务。

因此,当您想要对特定视图执行某些操作时,应该传递视图。 当您需要访问资源,全局数据或ui上下文或启动其他Android组件时,将传递上下文。

答案 1 :(得分:0)

我们需要了解View的构造方式和Context是什么。

View具有三个构造函数,它们全部使用Context作为参数。

Activity,中,如果以编程方式对view进行了夸张,而在XML中,view则通过使用ViewLayoutInflater进行了夸张。

LayoutInflaterContext作为参数并将其内部保存在类级别字段中。

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()获得该对象引用。