在 Android 中手动设置上下文
Manually setting context in Android
我是 Android 开发的新手,我对 Context 进行了研究。我明白它是什么以及为什么有用。但是我看到 android 在活动中为我处理上下文,例如,我必须扩展从上下文继承的 class,仅此而已。但是在某些情况下,我必须手动为事物添加上下文。例如,当从 kotlin 创建一个新的视图实例时。我必须将上下文传递给视图构造函数,例如:Button(this)
为什么我必须明确地告诉视图实例它是 activity 的一部分?
毕竟我是在activity里面定义的。
我知道上下文就像我的应用程序与外部资源和系统工具之间的桥梁,但手动设置它有时会让我感到困惑。
这是因为可以有很多其他参数。
我们设置 context
是因为我们让 Button
基础 class(或您正在使用的任何其他变量)声明的变量是 Button 的实例而不是另一个 class到处都有!
我找到这篇文章:https://www.101apps.co.za/index.php/articles/all-about-using-android-s-context-class.html
我认为这很好地解释了为什么我们需要手动传递上下文来查看实例。
"Passing the context to the view when it is being constructed, gives
you the flexibility to use a different context to construct the view,
as the one used by the activity, for example. This gives the view
access to resources other than those used by the activity."
Android 可以自动设置上下文,但您可以自由选择另一个。这可能会有用。
是的,从理论上讲,只有在将视图附加到父级时才能做到这一点,然后如果父级附加到 activity 根,则它具有上下文,否则 - 在附加视图时, Android 可以遍历它的后代并设置它们的上下文。
但是:
- 实施起来不方便。很容易拥有自主视图,每个视图都已设置为其上下文。
- 上下文中有些东西是操作视图所必需的。例如。约束系统、指标……许多位和螺栓。视图也监听事件,并且可以提供一些服务,这些服务在附加到另一个视图之前需要上下文。
- 如果您有多个上下文怎么办。您希望能够选择要引用的上下文。比如说,你有一个永远在线的浮动按钮,它由某些服务管理,视图由 activity.
管理
强烈建议查看 Android 来源。你会发现里面很酷的事实,这是一种很好的学习方式。
我是 Android 开发的新手,我对 Context 进行了研究。我明白它是什么以及为什么有用。但是我看到 android 在活动中为我处理上下文,例如,我必须扩展从上下文继承的 class,仅此而已。但是在某些情况下,我必须手动为事物添加上下文。例如,当从 kotlin 创建一个新的视图实例时。我必须将上下文传递给视图构造函数,例如:Button(this)
为什么我必须明确地告诉视图实例它是 activity 的一部分?
毕竟我是在activity里面定义的。
我知道上下文就像我的应用程序与外部资源和系统工具之间的桥梁,但手动设置它有时会让我感到困惑。
这是因为可以有很多其他参数。
我们设置 context
是因为我们让 Button
基础 class(或您正在使用的任何其他变量)声明的变量是 Button 的实例而不是另一个 class到处都有!
我找到这篇文章:https://www.101apps.co.za/index.php/articles/all-about-using-android-s-context-class.html
我认为这很好地解释了为什么我们需要手动传递上下文来查看实例。
"Passing the context to the view when it is being constructed, gives you the flexibility to use a different context to construct the view, as the one used by the activity, for example. This gives the view access to resources other than those used by the activity."
Android 可以自动设置上下文,但您可以自由选择另一个。这可能会有用。
是的,从理论上讲,只有在将视图附加到父级时才能做到这一点,然后如果父级附加到 activity 根,则它具有上下文,否则 - 在附加视图时, Android 可以遍历它的后代并设置它们的上下文。
但是:
- 实施起来不方便。很容易拥有自主视图,每个视图都已设置为其上下文。
- 上下文中有些东西是操作视图所必需的。例如。约束系统、指标……许多位和螺栓。视图也监听事件,并且可以提供一些服务,这些服务在附加到另一个视图之前需要上下文。
- 如果您有多个上下文怎么办。您希望能够选择要引用的上下文。比如说,你有一个永远在线的浮动按钮,它由某些服务管理,视图由 activity. 管理
强烈建议查看 Android 来源。你会发现里面很酷的事实,这是一种很好的学习方式。