Проблема при создании объекта и установке его переменных - PullRequest
0 голосов
/ 24 января 2011

Я сейчас создаю приложение, которое анализирует URL и получает из него некоторую информацию. Я хочу использовать эти значения для создания объектов, помещения их в массив списков и отображения их на экране с макетом ListView.

Проблема возникает, когда я хочу присвоить значения drawables для объекта. Я хочу, в зависимости от его значений, присвоить рисованный или другой. Вот код:

Retransmision retransmision = new Retransmision();
retransmision.setIdioma(idioma);
retransmision.setTipo(tipo);
retransmision.setCalidad(calidad);
retransmision.setLink(link);
retransmision.setImagenLogo(tipo);
retransmision.setImagenCalidad(calidad);
retransmisionesDescargadas.add(retransmision);

Я просто создаю объект и присваиваю некоторые значения его методам. И вот метод, который выбрасывает исключение nullPointerException:

public void setImagenCalidad(int calidad) {
    if (calidad == 0) {
    imagenCalidad = context.getResources().getDrawable(R.drawable.desconocida);
    } else if(calidad <= 250) {
    imagenCalidad = context.getResources().getDrawable(R.drawable.baja);
    } else if(calidad <= 500) {
    imagenCalidad = context.getResources().getDrawable(R.drawable.media);
    } else if(calidad <= 750) {
    imagenCalidad = context.getResources().getDrawable(R.drawable.alta);
    } else if(calidad <= 1000) {
    imagenCalidad = context.getResources().getDrawable(R.drawable.muy_alta);
    } else {
    imagenCalidad = context.getResources().getDrawable(R.drawable.excelente);
    }
}

Странно, так как я использую подобный код для метода setImagenLogo, который, кажется, работает хорошо. И единственное отличие состоит в том, что каждый получает параметр String. А другой int.

Ps: Если это может помочь, то это конструктор объекта retransmision и его переменных:

Context context;
    private String idioma;
    private String tipo;
    private int calidad;
    private String link;
    private Drawable imagenLogo;
    private Drawable imagenIdioma;
    private Drawable imagenCalidad;

    public Retransmision() {
        idioma = "";
        tipo = "";
        calidad = 0;
        link = "";
        imagenLogo = null;
        imagenIdioma = null;
        imagenCalidad = null;
    }

1 Ответ

0 голосов
/ 24 января 2011

Единственное, что может быть нулевым, это context ... и я вижу, что вы не инициализировали его в своем конструкторе.Может быть, это то, что вы хотите:

public Retransmision(Context ctx) {
    idioma = "";
    tipo = "";
    calidad = 0;
    link = "";
    imagenLogo = null;
    imagenIdioma = null;
    imagenCalidad = null;
    context = ctx;
}
...