创建对象并设置其变量时出现问题

时间:2011-01-24 15:26:40

标签: android object nullpointerexception drawable

我现在正在制作一个应用程序,解析一个网址并从中获取一些信息。我想使用这些值来创建对象,将它们放入arraylist中,并使用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 :(得分:0)

唯一可以为null的是context ...我发现你没有在构造函数中初始化它。也许这就是你想要的:

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