Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 上下文与视图_Android - Fatal编程技术网

Android 上下文与视图

Android 上下文与视图,android,Android,有人能解释一下上下文和视图之间的区别吗?我们什么时候选择上下文或视图?在大多数程序中,我发现将上下文或视图传递给某些方法,将上下文或视图传递给方法的实际需要是什么?这是一个奇怪的问题。视图描述ui的一个元素。它可以有onClickListeners、属性等等。但每个视图都是在某个上下文中创建的,通常是活动的上下文 上下文本身类似于代码在其中执行的环境。它可以访问ui(如果它是一个活动),它可以包含一些全局数据(应用程序上下文),并且可以访问资源(所有上下文)。此外,上下文允许您执行常见的andr

有人能解释一下上下文和视图之间的区别吗?我们什么时候选择上下文或视图?在大多数程序中,我发现将上下文或视图传递给某些方法,将上下文或视图传递给方法的实际需要是什么?

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

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

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

我们需要了解
视图
是如何构造的,什么是
上下文

View
有三个构造函数,它们都使用
Context
作为参数

活动中,
如果
视图
是以编程方式相对于XML进行膨胀的,
视图
是通过使用
LayoutInflater
来膨胀的
视图

LayoutInflater
Context
作为参数,并在内部将其保存在类级字段中

LayoutInfater layoutinflater = LayoutInflater.from(this);
其中“
”是
活动
实例

充气机
充气视图时,即:

充气器。充气(R.id.some\u视图,父视图,空)

它在内部将保存的
上下文
字段传递给
视图的构造函数

视图
总是将
上下文
作为参数,这一点很明显,因为视图存在于一些
上下文
中,这就是
活动


要回答您的问题,当需要将
上下文
传递给
活动
中的方法时,您可以编写“
”。如果方法不在
活动中
,并且您需要传递
上下文
,那么请记住,将
上下文
作为参数的
视图
会将对象引用保存在类级字段中。我们可以通过编写
view.getContext()
来获取此对象引用

这是一个非常有趣的问题,因为在监听器内部,我们通常传递视图。但是函数有时需要上下文,初学者不知道如何获得上下文。