【问题标题】:Is there anything wrong with using a public static Context? ( Regarding getResources() )使用公共静态上下文有什么问题吗? (关于 getResources() )
【发布时间】:2011-04-26 06:51:05
【问题描述】:

最近我在尝试在主类之外加载位图时遇到了问题。我发现在我的主类中,我可以将它作为上下文传递给任何给定的函数,允许我从该函数中调用 getResources()。有几件事对我来说没有意义。

关键字“this”只是指函数正在运行的当前对象,对吗?如果是这样,我如何使用“this”将我的主类作为上下文传递?它甚至没有上下文。我正在使用“扩展 Activity”,但 Activity 似乎也不包含任何名为 getResources() 的函数。

我找到了一种解决方法,它可以让我更轻松地做我想做的事情,即声明一个公共静态上下文 appContext;在我的主要课程中。然后,在 onCreate() 我设置 appContext = this;然后,我可以在需要时从其他地方调用 MainActivity.appContext.getResources()。所以,我真的有几个问题。

  1. 为什么从 MainActivity 内部将 appContext 设置为“this”时,MainActivity(我的主类)和 appContext 本质上不是一回事(没有 MainActivity.getResources() 这样的东西)

  2. 这样做不安全吗?这会导致我的程序出现任何潜在问题吗?

  3. 有没有办法在不使用 getResources() 的情况下加载图片?

  4. 在这个网站上显示我的代码的正确方法是什么?我习惯的标准([code][/code] 标签)在预览中似乎不能正常工作,所以我假设这里的处理方式不同。格式帮助页面说只需使用四个空格,但在预览部分似乎也没有任何区别。

编辑: 我刚刚在另一个帖子中看到有人说

现在一切都取决于您的主要活动的 onCreate 方法是否已被调用。

这让我开始思考。什么情况下不会调用 onCreate?似乎如果不调用它,程序将在许多方面停止正常工作,这与在其中初始化静态变量无关(即不会调用 setContentView)。

所以假设这样做没有任何问题,我能找到的唯一缺点是“MainActivity.appContext.getResources()”要键入很多来调用函数。有没有办法为此创建一种别名?我想我可以创建一个简单地调用它的函数,但这看起来很愚蠢。

【问题讨论】:

标签: java android


【解决方案1】:

如果您查看here,您会发现activityContext 的子类。

您可以使用反引号格式化代码,或者只使用编辑器上的{} 按钮。请参阅markdown manual 了解更多信息。

【讨论】:

  • 我明白了。那么在这种情况下,为什么 Eclipse 似乎认为 MainActivity.get 只能作为 MainActivity.getInstanceCount() 完成?这只是 Eclipse 没有在其自动完成菜单中列出超类函数吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 1970-01-01
  • 1970-01-01
  • 2019-10-02
  • 2013-04-23
  • 2012-08-18
相关资源
最近更新 更多