getResources()抛出错误

时间:2013-12-02 19:38:28

标签: java android

我有以下代码,用于在我的应用中使用两个标签创建自定义ListView

package com.test.testing;

import android.content.Context;
import android.text.Html;

public class SetRows {
    int image;
    String name;
    String id;

    public int getImage () {
        return image;
    }

    public void setImage (int image) {
        this.image = image;
    }

    public String getName () {
        return name;
    }

    public void setName (String name) {
        this.name = name;
    }

    public String getID () {
        return id;
    }

    public void setID (String id) {
        this.id = id;
    }

    public SetRows(int image, String name, String id) {

        super();
        this.image = image;
        this.name = Html.fromHtml(getResources().getString(R.string.colorcol)) + " COLOR: \n\t" + name;
        this.id = "MEANS: \n\t" +  id;
    }

}

以下一行:

this.name = Html.fromHtml(getResources().getString(R.string.colorcol)) + " COLOR: \n\t" + name;

给了我以下错误:

The method getResources() is undefined for the type SetRows

4 个答案:

答案 0 :(得分:1)

您需要更改代码,以便引用当前上下文,从而使您可以访问getResources

例如

public SetRows(Context currentContext,int image, String name, String id) {

        super();

        this.image = image;
        this.name = Html.fromHtml(currentContext.getResources().getString(R.string.colorcol)) + " COLOR: \n\t" + name;
        this.id = "MEANS: \n\t" +  id;
    }

您必须将类的实例化更改为

contents.add(new SetRows(this,inIconShow, sColor, sExplain)); 

答案 1 :(得分:1)

当你这样做时

getResources()

意味着

this.getResources()

这里这个是SetRows(你的类)的一个实例, 而你的类SetRows没有名为getResources的方法。

这就是错误的含义。

答案 2 :(得分:1)

getResources()是一种可用于扩展Context类的所有类的方法。你的班级没有。

常见的解决方法是在创建context对象时传递SetRows的实例。

public SetRows(Context context, int image, String name, String id) {

        super();
        this.image = image;
        this.name = Html.fromHtml(context.getResources().getString(R.string.colorcol)) + " COLOR: \n\t" + name;
        this.id = "MEANS: \n\t" +  id;
    }

然后在您的活动中,您可以这样做:

new SetRows(this, /****/);

答案 3 :(得分:1)

通过构造函数传递Context并调用:

context.getResources(...);