【发布时间】:2011-04-26 06:51:05
【问题描述】:
最近我在尝试在主类之外加载位图时遇到了问题。我发现在我的主类中,我可以将它作为上下文传递给任何给定的函数,允许我从该函数中调用 getResources()。有几件事对我来说没有意义。
关键字“this”只是指函数正在运行的当前对象,对吗?如果是这样,我如何使用“this”将我的主类作为上下文传递?它甚至没有上下文。我正在使用“扩展 Activity”,但 Activity 似乎也不包含任何名为 getResources() 的函数。
我找到了一种解决方法,它可以让我更轻松地做我想做的事情,即声明一个公共静态上下文 appContext;在我的主要课程中。然后,在 onCreate() 我设置 appContext = this;然后,我可以在需要时从其他地方调用 MainActivity.appContext.getResources()。所以,我真的有几个问题。
-
为什么从 MainActivity 内部将 appContext 设置为“this”时,MainActivity(我的主类)和 appContext 本质上不是一回事(没有 MainActivity.getResources() 这样的东西)
这样做不安全吗?这会导致我的程序出现任何潜在问题吗?
有没有办法在不使用 getResources() 的情况下加载图片?
在这个网站上显示我的代码的正确方法是什么?我习惯的标准([code][/code] 标签)在预览中似乎不能正常工作,所以我假设这里的处理方式不同。格式帮助页面说只需使用四个空格,但在预览部分似乎也没有任何区别。
编辑: 我刚刚在另一个帖子中看到有人说
现在一切都取决于您的主要活动的 onCreate 方法是否已被调用。
这让我开始思考。什么情况下不会调用 onCreate?似乎如果不调用它,程序将在许多方面停止正常工作,这与在其中初始化静态变量无关(即不会调用 setContentView)。
所以假设这样做没有任何问题,我能找到的唯一缺点是“MainActivity.appContext.getResources()”要键入很多来调用函数。有没有办法为此创建一种别名?我想我可以创建一个简单地调用它的函数,但这看起来很愚蠢。
【问题讨论】:
-
stackoverflow.com/editing-help;如果您想在列表下方创建一个代码块(例如您的问题中的那个),您需要缩进 8 个空格(不,这不理想)