Android: Должен ли я иметь доступ к ресурсам из своего класса? - PullRequest
2 голосов
/ 29 ноября 2010

У меня в проекте есть класс, в котором я хочу получить доступ к свойствам картинки. Но я не хочу показывать это через этот класс. В этом классе я просто хочу узнать ширину и высоту изображения и выполнить некоторые математические функции, чтобы что-то вернуть.

Моя проблема в том, что у меня нет доступа к ресурсам. например, когда я пишу

image = BitmapFactory.decodeResource(this.getResources(), R.drawable.tasnim);

В нем говорится, что метод getResources () не определен для типа Stego (stego - мое имя класса).

Скажите, пожалуйста, что мне делать?

public class Stego()
{
    Public Stego(){
        image = BitmapFactory.decodeResource(this.getResources(), R.drawable.tasnim);
        imWidth  = image.getWidth();
        imHeight = image.getHeight();
    }
}

1 Ответ

3 голосов
/ 29 ноября 2010

Функция getResources() относится к классу Context. Поэтому, если ваш класс Stego прямо (или косвенно) не расширяет Context, функция getResources() недоступна.

Итак, вам нужно передать ссылку на контекст вашего приложения (например, в конструкторе вашего Stego класса или аналогичного). Или, если вам нужен только один идентификатор ресурса, может быть проще просто передать этот идентификатор.

Это может выглядеть, например, так:

public class Stego()
{
    Public Stego(Context myAppContext){
        image = BitmapFactory.decodeResource(myAppContext.getResources(), R.drawable.tasnim);
        imWidth  = image.getWidth();
        imHeight = image.getHeight();
    }
}

Затем вы можете инициализировать экземпляр вашего Stego класса следующим образом:

Stego stego = new Stego(this);
...