我在res / raw命名的parameters.xml中有一个资源xml文件。
此文件通过名为Parameters
的类使用。
类Parameters
使用Xpath从xml文件中提取数据。
在主要活动中,我编写了这个:
Parameters parameters = new
Parameters(getResources().openRawResource(R.raw.parameters));
一切正常!
我想使用xml资源测试Parameters
类
没有活动==>我不再有上下文了
目前,我已经在Parameters
课程中编写了一个主要方法
(因为我也将这个类用于其他非android项目)
我试过这个:
1- Resources.getSystem().openRawResource(R.raw.parameter)
-
不起作用,因为我的xml文件不是系统资源
2-创建一个扩展InstrumentationTestCase
的内部类(在main方法中) -
不起作用:异常运行时存根!
有什么想法解决我的问题吗? 感谢
答案 0 :(得分:0)
如果没有上下文实例,我认为你不能这样做。您可以阅读更多here。
就像有人指出的那样,最好将资源放在Activity / Fragment中,然后将其传递给你需要它的对象。
答案 1 :(得分:0)
您可以为您的应用程序创建静态引用,如下所示:
public class YourApplicationClass extends Application{
private static YourApplicationClass instance;
public YourApplicationClass (){
instance = this;
}
public static YourApplicationClass getInstance(){
return instance;
}
}
然后:
YourApplicationClass .getInstance().getResources().openRawResource(R.raw.parameters);
添加应用程序的任何一点都将获得资源。
另外,不要忘记在清单中添加这个内部应用程序元素:
android:name=".YourApplicationClass"
答案 2 :(得分:0)
我找到了使用Classloader
和
java -ea -classpath来执行的解决方案
public static void main(String[] args) {
Parameters parameters = new Parameters(ClassLoader.class.getClass().
getResourceAsStream("/res/raw/parameters.xml"));
....
}
public static void main(String[] args) {
Parameters parameters = new Parameters(ClassLoader.class.getClass().
getResourceAsStream("/res/raw/parameters.xml"));
....
}
cd myprojectPath/app/src/main/java javac Parameters.java java -ea -classpath ".:../" Parameters