簡體   English   中英

為什么我不能從簡單的Java類訪問資產文件夾?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM