2014-12-20 5 views
1

Я пытаюсь сохранить некоторые данные, используя XML в android, чтобы сохранить их во внутреннем хранилище устройств.Внутреннее хранилище Android XML

Я хочу быть уверен, что приложение написано через открыто/закрыто и единую ответственность -принципа. (Так что я мог Ис переключаться между методами хранения)

-domain 
|---db 
|---|---appReader 
|---|---|---AppReader.java 
|---|---|---XMLAppReader.java 
|---|---appWriter 
|---|---|---AppWriter.java 
|---|---|---XMLAppWriter.java 
|---DBFacade.java 
|---DBFacadeImpl.java 
-MainActivity.java 

Это моя текущей структурой, ...

Проблемой я столкнулся в настоящее время, является то, что в каждом учебнике о андроиде и XML они используют функция openFileOutput(filename,Context.Mode_Append) Я полагаю, что это функция из суперкласса активности?

Как бы я должен инициализировать мой FileOutputStream и по-прежнему держать мой открыто/закрыто и единый ответственность принцип неприкосновенности?

Должен ли я передать экземпляр Activity в свой конструктор XMLAppWriter? Разве это не подрывает Одиночная ответственность принцип?

+3

«Проблема я столкнулся в настоящее время, является то, что в каждом учебнике о андроида и XML они используют функцию openFileOutput (имя файла, Context.Mode_Append)» - конечно, не каждый. «Наверное, это функция суперкласса активности?» - 'openFileOutput()' - это метод в 'Context', а' Activity' наследуется от 'Context'. 'getFilesDir()' - это еще один метод в 'Context', который возвращает объект' File', указывающий на то, где вы можете читать и записывать файлы для основной части внутреннего хранилища вашего приложения. – CommonsWare

+0

Итак, вы говорите, что я могу добавить параметр Context в свой конструктор XMLWriter? –

+0

Я понятия не имею. Из ~ 7 миллиардов человек на планете вы единственный, кто знает, что такое ваш XMLWriter, что его использует, какой API он предоставляет тем, кто его использует, и т. Д. – CommonsWare

ответ

0

Вместо того чтобы передавать экземпляр действия как параметр, вы можете использовать метод контекста приложения, который не нарушает принцип единой ответственности.

getApplicationContext().openFileOutput(name, mode); 
+0

Это не помогает мне, Чтобы использовать 'getApplicationContext()' Мне нужно вызвать его из класса, который расширяет класс Activity. –

+0

Вы можете расширить класс приложений Android, public YourApp расширяет Application {// ...} и инициализирует в YourApp с помощью getApplicationContext(). Но вам также нужно указать имя приложения в файле манифеста. – alijandro

+0

Итак, в моем конструкторе 'XMLAppWriter' (класс, где мне нужно использовать метод' openFileOutput (...) '), мне нужно вызвать' getApplicationContext'? –

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