简单Java类中的getResources()错误

时间:2018-11-22 02:39:52

标签: java android

我在学习Recyclerview时所遵循的简单教程代码遇到了问题。 首先,我创建一个类来表示类似

的项目
package tom_d.fr.testrecyclerview;

import android.content.res.Resources;
import java.util.ArrayList;

public class Planete {

    public String mNom;
    public int mDistance;
    protected ArrayList<Planete> mListe;

    Planete(String nom, int distance) {
        mNom = nom; // nom de la planète
        mDistance = distance; // distance au soleil en Gm

        Resources res = getResources();
        final String[] noms = res.getStringArray(R.array.noms);
        final int[] distances = res.getIntArray(R.array.distances);

        mListe = new ArrayList<Planete>();
        for (int i=0; i<noms.length; ++i) {
            mListe.add(new Planete(noms[i], distances[i]));
        }
    }

我得到错误:找不到符号方法getResources()

即使我尝试:

Resources res = getApplicationContext().getResources();

如何进行?我只想访问带有数组的xml文件:(

我也在stackoverflow和其他网站上搜索了此错误,但没有功能性答案。...

我认为我犯了一个错误,但是我不知道在哪里:/

3 个答案:

答案 0 :(得分:2)

您需要上下文来访问资源。将活动的上下文传递给班级

Planete(Context context, String nom, int distance) {
    Resources res = context.getResources();
}

然后在您的活动中

new Planete(this, "sample", 1);

答案 1 :(得分:0)

像这样转换您的班级

public class Planete {

    private Context context;
    public String mNom;
    public int mDistance;
    protected ArrayList<Planete> mListe;

    Planete(Context context, String nom, int distance) {
        mNom = nom; // nom de la planète
        mDistance = distance; // distance au soleil en Gm

        Resources res = context.getResources();
        final String[] noms = res.getStringArray(R.array.noms);
        final int[] distances = res.getIntArray(R.array.distances);

        mListe = new ArrayList<Planete>();
        for (int i=0; i<noms.length; ++i) {
            mListe.add(new Planete(noms[i], distances[i]));
        }
    }
}

这将起作用

答案 2 :(得分:0)

您不能直接使用“资源”, 因为这是外部类文件。在使用此外部类文件的地方,它是未知的。

如果使用getAplicationContext(),则它仍然不允许访问资源。

因此,您可以将项目资源及其调用或使用的那些活动与上下文一起使用。

Planete(Context context, String nom, int distance) {
    Resources res = context.getResources();
}