2012-09-09 39 views
0

所以我想我是Android新手,并且对Android上下文如何工作以及上下文中包含什么以及什么不包含内容感到困惑。我想知道如果我导入了一个java文件,该文件中实现了一个活动中的View.OnClickListener的类,它是否作为上下文的一部分计数呢?另外,如果我有一个名为NewOnClick的类实现View.OnClickListener,我可以使用android:OnClick =“NewOnClick”,或者只能使用方法。我问的原因是我想编写我的处理程序,这些程序将包含在几乎活动中。Android上下文混淆和OnClick处理程序

还有什么方法可以解释什么是上下文吗?其他许多方法并没有真正解释它的用途,或者只是说它传递给其他小部件并管理资源,这实际上是根据我的观点,如果有任何可以向我解释的方式,那么与GTK(gtkmm)或wxWidgets合作过的人都是有道理的。

回答

0

有一种简单的查看方法,即Context是应用程序,活动,服务等的基类。因此,Activity中的所有内容都从Context继承。 Android中的Context是当前正在执行的代码所在的环境,意味着所有可用的代码以及影响它的所有内容(至少,您有权访问)。例如,在一个Activity中,“this”引用当前的Activity,并且由于这从Context继承,访问当前上下文中的所有内容以及在Activity中定义的所有内容,例如,当地的领域,更多的方法等

看看这里的间接子类:

http://developer.android.com/reference/android/content/Context.html

NB。切勿在派生类的生命周期之外暴露上下文。例如不要让生命周期大于容器的任何对象挂在参考上。

http://android-developers.blogspot.co.uk/2009/01/avoiding-memory-leaks.html

希望这有助于,而不是混淆。

+0

因此,从这我得到,它意味着我将无法使用导入的文件来处理我的onclick信息,是否有包括它在上下文,以便我可以使用android:onClick? – csteifel

+0

onClick处理程序本身必须是Activity的一部分,因此必须是Context的一部分,但处理程序可以是一个简单的类,它实例化具有导入的公共代码的另一个非静态类。在你的onClick处理程序中创建的这个类的实例本身将被Activity所“拥有”,并且它是Context,并且除非你在其他地方挂着引用,否则当你的Activity退出或者超出范围时将被销毁。还有两种方法来实现点击处理程序;作为匿名内部类或私人类。 – Simon

0

从文档,

中的语境是:

接口有关的应用程序环境的全局信息。 [...]它允许访问特定应用的资源和类, 以及向上调用应用程序级的操作,如启动 活动,广播和接收意图等

例如,如果您需要访问应用程序中的某些资源,例如显示图像,播放音频文件,设置自定义字体(图像,音频文件,字体 - 全部为资源),则需要使用Context参考。
Activity类继承Context,这就是为什么你可能没有“感受”上下文,但实际上你在任何地方都可以使用它。