我在学习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和其他网站上搜索了此错误,但没有功能性答案。...
我认为我犯了一个错误,但是我不知道在哪里:/
答案 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();
}