2013-12-06 2 views
0

У меня есть класс (только обычный класс), который содержит списки, которые использует мое приложение. Эти списки обновляются из Интернета и сохраняются локально в виде XML-файла. Код, чтобы получить список будет выглядеть следующим образом:Загрузка файлов в Android

private static List<String> list1; 
public static List<String> getList1() { 
    if (list1 == null) { 

     //load it 
     try { 
      FileInputStream fis = openFileInput(FILE_NAME); 
      //do stuff with the file here... 
     } catch (FileNotFoundException e) { 
      //if the file is missing load it from the web 
     } 

    } 

    return list1; 
} 

так что этот метод будет возвращать объект списка, если он не представит было бы загрузить его из локального файла, если нет, то будет загрузить его из паутина. Но проблема в том, что openFileInput() не разрешает в моем классе, так как это обычный класс, и его нужно будет вызывать из контекста. Каков наилучший способ сделать это? Использовать контекст в качестве аргумента для getList1()? Но это не может быть сделано везде, так как это называется во всех видах классов ...

+1

Используйте контекст «Приложение». Файлы связаны с приложением, а не с 'Activity' – Simon

+0

Спасибо, это сработало отлично! – Squeazer

ответ

0

Я решил эту проблему с помощью нового класса App:

public class App extends Application { 
    public static Context context; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     context = getApplicationContext(); 
    } 
} 

и добавив android:name="path.to.App" на Андроид манифеста. Таким образом, вы всегда будете иметь глобальный контекст и можете использовать его везде.

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