Нормальным решением этого является передача экземпляра контекста классу при его создании или после его первого создания, но до того, как вам потребуется использовать контекст.
Другим решением является создание объекта Application со статическим методом для доступа к контексту приложения, хотя это довольно тесно связывает объект Droid с кодом.
Редактировать, примеры добавлены
Либо измените класс Droid на что-то вроде этого
public Droid(Context context,int x, int y) {
this.bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.birdpic);
this.x = x;
this.y = y;
}
Или создайте приложение примерно так:
public class App extends android.app.Application
{
private static App mApp = null;
/* (non-Javadoc)
* @see android.app.Application#onCreate()
*/
@Override
public void onCreate()
{
super.onCreate();
mApp = this;
}
public static Context context()
{
return mApp.getApplicationContext();
}
}
И вызывайте App.context () везде, где вам нужен контекст - обратите внимание, однако, что не все функции доступны в контексте приложения, некоторые доступны только в контексте действия, но это, безусловно, будет соответствовать вашей потребности в getResources ().
Обратите внимание, что вам нужно добавить android: name к определению вашего приложения в манифесте, что-то вроде этого:
<application
android:icon="@drawable/icon"
android:label="@string/app_name"
android:name=".App" >