Android位图有时会返回null

时间:2015-03-17 04:56:19

标签: java android bitmap resources

我正在为Android制作破砖游戏并试图改变背景图像。在游戏的第一次运行中,这种情况在100%的时间都有效。

     mBackgroundImage = BitmapFactory.decodeResource
                (gameView.getContext().getResources(), 
                R.drawable.planet3);

planet3位于res / drawable文件夹中。

如果我回到上一个屏幕并开始新游戏,我会在大约90%的时间内获得NPE。如果我使用我正在处理的框架提供的资源,它与“planet3”位于同一文件夹中,奇怪的是,无论是新游戏还是第一个游戏等,它都会100%有效。

为什么会在某些时候发生这种情况而不是其他情况。我通常会发现,当它工作时,它是因为我正在调试它并逐行逐步,但这可能只是巧合。

我目前的代码如下,TheGame是游戏运行的当前线程,我上面粘贴的代码是在这个的构造函数中,I.E。每次制作新游戏时,都应设置背景。您还可以在左侧看到文件结构,以验证文件“background”与“planet3”位于同一文件夹中: enter image description here

就错误而言,我没有实际的错误消息,因为它只是说MOOC已停止工作,然后重新启动程序。

2 个答案:

答案 0 :(得分:0)

如果您使用的是沉重的图片,或者请在此处发布所有代码以及异常以及更好的分辨率,可能会发生这种情况

答案 1 :(得分:0)

我认为您的案例中NPE的原因是:

BitmapFactory无法找到上下文参数 gameView.getContext()

您应该使用:

mBackgroundImage = BitmapFactory.decodeResource
                (getApplicationContext().getResources(), 
                R.drawable.planet3);

如果您已通过构造函数在成员变量中保存了上下文,即 mContext ,那么您可以使用它:

mBackgroundImage = BitmapFactory.decodeResource
                (mContext.getResources(), 
                R.drawable.planet3);