Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
reisal78
894 / 645 / 218
Регистрация: 28.04.2013
Сообщений: 1,845
#1

Как получить данные из файла .properties

03.06.2015, 11:33. Просмотров 697. Ответов 10
Метки нет (Все метки)

Всем привет.
У меня есть класс который не наследуется от Activity. (Это класс фабрика)
Как можно открыть в нем InputStream для чтения файла .properties? (Куда положить файлик?)
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2015, 11:33
Ответы с готовыми решениями:

Как получить данные из EditText, созданного программно, или как узнать ID элемента?
Всем здрасте и с Новым годом! Суть вопроса: Как получить значение, введенное...

Как получить данные с гироскопа с телефона?
Здравствуйте, не могли бы вы помочь мне с тем, как получить данные с гироскопа...

Как получить данные контакта из Contact Provider
Подскажите как получить все данные из Contact Provider относящиеся к...

Как получить данные из Runnable процесса вызываемого из CallBack функции
Доброго всем суток, вопрос новичка, учусь.. Пишу программу под Андроид, в...

Как получить данные из социальных сетей и записать их в андроид-приложение?
Необходимо сделать автозаполнение формы в андроиде элементами из аккаунта...

10
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
03.06.2015, 11:37 #2
reisal78, в папку assets.
Java
1
2
3
4
5
6
7
8
9
10
Resources resources = getResources();
AssetManager assetManager = resources.getAssets();
 
try {
    InputStream inputStream = assetManager.open("config.properties");
    Properties properties = new Properties();
    properties.load(inputStream);
} catch (IOException e) {
    e.printStackTrace();
}
0
reisal78
894 / 645 / 218
Регистрация: 28.04.2013
Сообщений: 1,845
03.06.2015, 11:39  [ТС] #3
YuraAAA,
getResources() я так понимаю, что метод Context a? От чего мне унаследовать мой класс?
0
androbro
343 / 303 / 68
Регистрация: 17.10.2014
Сообщений: 897
03.06.2015, 11:44 #4
reisal78, ну так передайте в него контекст при создании
0
reisal78
894 / 645 / 218
Регистрация: 28.04.2013
Сообщений: 1,845
03.06.2015, 11:59  [ТС] #5
Класс выглядит так:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class FactoryLinks {
    public static final String TAG = "mc2";
    private static FactoryLinks instance;
    private Map<String, Object> links;
 
    public static synchronized FactoryLinks getInstance() {
        if (instance == null) {
            instance = new FactoryLinks();
        }
        return instance;
    }
 
    private FactoryLinks() {
        links = new HashMap<>();
 
 //       InputStream inputStream = ;
        Properties prop = new Properties();
        try {
 //           prop.load(inputStream);
            Log.i(TAG, "Файл конфигурации загружен");
        } catch (IOException e) {
            Log.e(TAG, "Ошибка загрузки файла конфигурации " + e.getMessage());
            e.printStackTrace();
        }
    }
 
 
    public Object getLink(String key) {
        if (!links.containsKey(key)) {
            throw new IllegalArgumentException("Key " + key + " not found in Factory");
        }
        return links.get(key);
    }
}
Добавлено через 15 минут
Идея у меня такая.
- стартую приложение.
- показываю пользователю стартовую активити.
- инициализирую фабрику
- в фабрике из файла пропертей получаю классы для которых нужно создать объекты.
- в фабрике создаю объекты классов, реализующих нужные мне интерфейсы и помещаю их в мапу.
- в дальнейшем в приложении, "дергаю" эти объекты из фабрики.

androbro, просто в синглтон передавать параметром что то... мне кажется это не лучшая идея =)
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
03.06.2015, 12:02 #6
Лучший ответ Сообщение было отмечено reisal78 как решение

Решение

reisal78,
1. Создайте класс TheApplication.java и унаследуйте его от Application класса
2. Пропишите его как name в тэге <application в файле манифеста.
3. TheApplication сделайте singleton
4. Получите контекст из любого места Вашей программы с помощью TheApplication.getInstance().getApplicationContext()

Добавлено через 1 минуту
Цитата Сообщение от reisal78 Посмотреть сообщение
public static synchronized FactoryLinks getInstance()
Cинхронизация метода не самое лучшее решение. Если у Вас есть шанс одновременного вызова из нескольких потоков, можно использовать что-то типа double check-lock singleton
2
reisal78
894 / 645 / 218
Регистрация: 28.04.2013
Сообщений: 1,845
03.06.2015, 12:36  [ТС] #7
Цитата Сообщение от YuraAAA Посмотреть сообщение
Cинхронизация метода не самое лучшее решение. Если у Вас есть шанс одновременного вызова из нескольких потоков, можно использовать что-то типа double check-lock singleton
Я бы сказал "не самое быстрое решение"...
Спасибо за совет

Добавлено через 19 минут
Цитата Сообщение от YuraAAA Посмотреть сообщение
3. TheApplication сделайте singleton
С приватным конструктором не работает.
Но если я правильно разобрался с жизненным циклом андройд приложений, то объект Application будет создан всего один при старте приложения?
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
03.06.2015, 13:38 #8
reisal78, да, совершенно верно. Забыл упомянуть, это не совсем "классический" синглетон.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public class TheApplication extends Application {
    private static TheApplication sApplication;
 
    public static TheApplication getInstance() {
        return sApplication;
    }
 
    @Override
    public void onCreate() {
        super.onCreate();
        sApplication = this;
    }
}
0
androbro
343 / 303 / 68
Регистрация: 17.10.2014
Сообщений: 897
03.06.2015, 13:51 #9
YuraAAA, если не составить труда выскажите Ваши соображения по ситуации:
у меня есть ряд так сказать параметров(типа user_id, user_fio итд.) которые нужны в некоторых activity.
я каждый раз дергаю их из sharedPreference.
может быть целесообразней воспользоватся штукой которую Вы привели?и живет такой "синглтон" на протяжении всего ЖЦ приложения?
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
03.06.2015, 14:22 #10
androbro, Да, это вполне нормальный вариант. Вы можете хранить их в инстансе аппликейшена.
Цитата Сообщение от androbro Посмотреть сообщение
и живет такой "синглтон" на протяжении всего ЖЦ приложения?
да
1
androbro
343 / 303 / 68
Регистрация: 17.10.2014
Сообщений: 897
03.06.2015, 14:47 #11
YuraAAA, ок, спасибо!
0
03.06.2015, 14:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2015, 14:47

Как получить объект класса LinearLayout из файла .xml?
Как вместо этого: LinearLayout layout = new LinearLayout(this);...

Как можно получить картинку альбома для аудио файла
Получаю list аудио файлов таким образом: public @Nullable List&lt;Audio&gt; ...

Data Backup -как получить адрес файла стандартных настроек
Здравствуйте! На developer.android.com прочитал урок о использовании...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru