android - 如何从没有上下文的类中调用 getResources()?

标签 android class background android-context

在我的应用程序中,我有很多类(class)和 Activity 。 Droid 是一个没有上下文的类。 Mygame 是一个扩展 SurfaceView 并实现 SurfaceHolder.Callback 的类。 我正在 mygame 类中创建一个 Droid 对象并为其设置背景图像和位置。我为此编写的代码如下所示。

block1 = new Droid(BitmapFactory.decodeResource(getResources(), R.drawable.birdpic), 100, 10);

Droid 类的构造函数如下所示。

public Droid(Bitmap bitmap, int x, int y) {

    this.bitmap = bitmap;
    this.x = x;
    this.y = y;
}   

在特定情况下,我必须从 Droid 类本身设置 Droid 对象的背景图像和位置。我遇到了这个问题。下面是执行此操作的代码 fragment 。

if(checkflag)
{
    myObj.centerblock=new Droid(BitmapFactory.decodeResource(getResources(), R.drawable.blast), myObj.xpos, myObj.ypos);
}   

问题在于 Droid 类没有上下文。所以我不能在这里使用 getResources() 。我已经尝试了下面的代码,但它崩溃了。

if(checkflag)
{
    myObj.centerblock=new Droid(BitmapFactory.decodeResource(myObj.getResources(), R.drawable.blast), myObj.xpos, myObj.ypos);
}

谁能帮帮我。我只想设置背景图像并将其定位为 Droid 类本身的 Droid 对象。

最佳答案

上下文是系统的句柄;它提供诸如解析资源、获取对数据库和首选项的访问权限等服务。它是一个“接口(interface)”,允许访问特定于应用程序的资源和类以及有关应用程序环境的信息。您的 Activity 和服务还将 Context 扩展为它们继承所有这些方法以访问应用程序运行的环境信息。

这意味着如果要获取/修改有关资源的某些特定信息,则必须将上下文传递给特定类。 您可以在构造函数中传递上下文,例如

public classname(Context context, String s1) 
{
...
}

关于android - 如何从没有上下文的类中调用 getResources()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8238588/

相关文章:

Android 数据库 - 没有这样的表错误

function - 在 Scala 中从其他类导入函数

android - 在 Android 中为 webview 设置背景图片

android - 具有背景颜色和行间距的 TextView

ios - 如何在 swift 中以编程方式在 Storyboard对象之前添加对象

java - 如何停止 Android 中另一个应用程序的服务?

java - 安卓。从代码更改 FrameLayout 的背景颜色

android - 如何使用 Loop 将数据插入 Sqlite 数据库?

java - java中强制静态的抽象方法

java - 在不同的方法中访问和使用自定义对象和 ArrayList<Object>