【问题标题】:Android bitmap sometimes returning nullAndroid 位图有时返回 null
【发布时间】:2015-03-17 13:14:57
【问题描述】:

我正在为 android 制作一个破砖游戏并尝试更改背景图像。在游戏第一次运行时,这 100% 的时间都有效。

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

planet3 位于 res/drawable 文件夹中。

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

为什么有时会发生这种情况,而有时却不会。我通常发现它确实起作用是因为我正在调试它并逐行执行,但这可能只是巧合。

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

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

【问题讨论】:

    标签: java android bitmap resources


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我认为在你的情况下 NPE 的原因是:

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

      你应该使用:

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

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

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

      【讨论】:

      • getApplicationContext 应该是用户自定义的函数吗?
      • No.. 它的 Android API.. 在 Context 类中提供
      • 我似乎无法使用它?我已经导入了上下文类,我需要在某个类中使用它吗?
      • 只需使用getApplicationContext().getResources()。它是否给出错误?
      • 如果它给出错误然后声明一个上下文对象类并在你的构造函数中初始化它并像mContext.getResources()一样使用它
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-02
      • 1970-01-01
      • 2012-08-09
      • 2018-02-23
      • 1970-01-01
      • 1970-01-01
      • 2015-02-22
      相关资源
      最近更新 更多