[英]Why can't I access to assets folder from a simple java class?
我有一個名為FirstClass的Activity類,以及一個名為SecondClass的簡單Java類。
在FirstActivity內部,我想像這樣創建SecondClass的新對象:
SecondClass secondClass = new SecondClass();
在SecondClass內部,我打算訪問Assets
文件夾並處理JSON文件,然后通過方法返回結果。
AssetManager assetManager = getResources().getAssets();
InputStream stream = assetManager.open("myJson.json");
但是我遇到了錯誤,如何解決?
為了訪問SecondClass中的資源,您需要一個Context
實例。
首先,將Context
的實例傳遞給SecondClass:
private Context context;
public SecondClass(Context context)
{
this.context = context;
// the rest of your codes ...
}
然后使用以下代碼訪問assets
:
AssetManager assetManager = this.context.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");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.