2015-05-14 6 views
0

Я пытаюсь прочитать файл JSON из активов по фрагменту, используя getAssets(), но в IDE говорится: «Не удается разрешить этот метод (getAssets())».Чтение файла JSON из активов

Код

public String loadJSONFromAsset() { 
    String json = null; 
    try { 
     InputStream is = getAssets().open("moods.json"); 
     int size = is.available(); 
     byte[] buffer = new byte[size]; 
     is.read(buffer); 
     is.close(); 
     json = new String(buffer, "UTF-8"); 
    } catch (IOException ex) { 
     ex.printStackTrace(); 
     return null; 
    } 
    return json; 

} 

ответ

1

Попробуйте это:

Создать класс LoaderHelper.java

public class LoaderHelper { 
    public static String getJson(Context context, String json){ 
     String jsonString=parseFileToString(context, json); 
     return jsonString; 
    } 
    public static String parseFileToString(Context context, String filename) 
    { 
     try 
     { 
      InputStream stream = context.getAssets().open(filename); 
      int size = stream.available(); 

      byte[] bytes = new byte[size]; 
      stream.read(bytes); 
      stream.close(); 

      return new String(bytes); 

     } catch (IOException e) { 
      Log.i("GuiFormData", "IOException: " + e.getMessage()); 
     } 
     return null; 
    } 
} 

Чтобы получить JSON строка вызова выше класс, как:

String str=LoaderHelper.parseFileToString(context, "levels.json"); 

, где levels.json - это файл json, хранящийся в папке asset.

0

Метод getAssets() является частью класса Context. Поэтому, если вы не вызываете loadJSONFromAsset() в классе, который расширяет контекст, например. Деятельность, вам необходимо предоставить ссылку на контекст в качестве аргумента вашего метода, а затем вызвать getAssets() на нем

Смежные вопросы