最近我在尝试在主类之外加载位图时遇到了问题。我发现在我的主类中,我可以将它作为Context传递给任何给定的函数,允许我从该函数中调用getResources()。关于这一点有几点对我来说没有意义。
关键字“this”只是指函数运行的当前对象,对吧?如果是这样,我如何通过使用“this”将我的主类作为Context传递?它甚至没有上下文。我正在使用“extends Activity”,但Activity似乎不包含任何名为getResources()的函数。
我找到了一个解决方法,它允许我做我想要的更容易的事情,即声明一个公共静态Context appContext;在我的主要课程中。然后,在onCreate()中设置appContext = this;然后,从其他地方我可以在需要时调用MainActivity.appContext.getResources()。所以,我在这里有几个问题。
为什么当MainConctivity中的appContext设置为“this”时,MainActivity(我的主类)和appContext基本上不一样(没有MainActivity.getResources())
< / LI>这样做不安全吗?这会导致我的程序中出现任何潜在问题吗?
有没有办法在不使用getResources()的情况下加载图片?
在本网站显示我的代码的正确方法是什么?我习惯的标准([code] [/ code]标签)似乎在预览中没有正常工作,所以我假设它在这里处理不同。格式化帮助页面只是简单地使用了四个空格,但在预览部分中似乎没有任何差异。
编辑: 我只是在另一个帖子中读到有人说
现在一切都取决于您的主要活动的onCreate方法已被调用。
这让我思考。在什么情况下会不会被称为创造?好像如果它没有被调用,程序将在许多方面停止正常工作,与在其中初始化静态变量无关(即不会调用setContentView)。
因此,假设以这种方式执行它没有任何问题,我可以找到的唯一缺点是“MainActivity.appContext.getResources()”是很多要键入来调用函数。有没有办法为此创建一种别名?我想我可以创建一个简单地调用它的函数,但这看起来很傻。
答案 0 :(得分:0)
如果你看here,就会发现activity
是Context
的子类。
您可以使用backtic格式化代码,或者只使用编辑器上的{}
按钮。有关详细信息,请参阅markdown manual。