我有一个名为FirstClass的Activity类,以及一个名为SecondClass的简单Java类。
在FirstActivity内部,我想像这样创建SecondClass的新对象:
SecondClass secondClass = new SecondClass();
在SecondClass内部,我打算访问
Assets
文件夹并处理JSON文件,然后通过方法返回结果。AssetManager assetManager = getResources().getAssets();
InputStream stream = assetManager.open("myJson.json");
但是我遇到了错误,如何解决?
最佳答案
这是因为getResources()
是Context的方法,它是Activity的父类。因此,每当您尝试在活动中调用以下代码时:
AssetManager assetManager = getResources().getAssets();
它与:
AssetManager assetManager = YourActivity.this.getResources().getAssets();
YourActivity.this
是上下文。但是,当您尝试从不是Context的子类的类中调用它时,它将为您提供
method not found
的错误。您需要从Context派生您的类或将上下文传递给您的类。像这样:
public class SecondClass {
private Context mContext;
public SecondClass(Context context) {
mContext = context;
}
// then use it on your method
public void doSomethingWithAsset() {
AssetManager assetManager = mContext.getResources().getAssets();
InputStream stream = assetManager.open("myJson.json");
}
}