在我的应用程序中,我有很多类(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/