Форум программистов, компьютерный форум CyberForum.ru

Локализация приложения - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android В одном фрагменте запустить интент - во втором поймать его http://www.cyberforum.ru/android-dev/thread1782053.html
Если оба фрагмента находятся в LinearLayout одного активити можно ли из одного фрагмента запустить интент а во втором поймать его? У меня не получалось, а можно это вообще?То есть если интент запустить в первом фрагменте(в методе onCreate()) а во втором в методе onResume зарегистрировать ресивер и словить этот интент?
Android Виджеты, BroadcastReceiver и Строки Здравствуйте. Занимаюсь созданием виджета. Делаю что то наподобие нажатия на кнопку. Использую Broadcast. Предполагается ,что после нажатия на определенную кнопку(в данном примере их 4), в экстра сохраняется какая то текстовая переменная и присваивается броадкаст сообщение. В зависимости от этого сообщения в StringBuilder записываю определенные экстра и передаю их виджету. Проблема в том, что... http://www.cyberforum.ru/android-dev/thread1782050.html
Android Alert Dialog закрывается при нажатии кнопки Назад
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setCancelable(false); Диалог все равно закрывается, когда я клацаю кнопку Назад. Как пофиксить?
Android UnknownHostException
URL url = new URL("http://api.openweathermap.org/data/2.5/forecast?q=London&APPID=eb52c829ac2e5f298eda587dc2e091e5"); // Create the request to OpenWeatherMap, and open the connection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.connect(); My url is defenitely OK. U can check it on your own. Byt I get this( (Моя ссылка...
Android Сделать "шареварную" версию apk http://www.cyberforum.ru/android-dev/thread1781957.html
Гуру, посоветуйте! Как подобное делается??? Надо дать бесплатную "Lite" версию в которой на неделю работают функции от "Pro"(полной)! Как узнать когда программу установили на устройство? Можно ли "пометить" устройство не файлом/папкой на флешке, а в неком "общем реестре аля Windows"? Можно ли узнать когда (эту версию) программу ЭТОТ аккаунт скачал первый раз с гугла? Гугл плей такое...
Android Запуск приложений через adb Здравствуйте, форумчане. Пишу приложение для ПК, которое позволяет устанавливать приложения на смартфон и очень бы хотелось добавить функцию запуска приложения на смартфоне после установки. Приложение работает путем отправки команд по adb. Как можно это реализовать? подробнее

Показать сообщение отдельно
_kda
7 / 7 / 4
Регистрация: 15.03.2016
Сообщений: 31

Локализация приложения - Android

18.07.2016, 05:14. Просмотров 159. Ответов 0
Метки (Все метки)

Задался вопросом, как локализовать приложение из меню самого приложения. Сама техника создания ресурсов и смены локали Resources ясна:
C#
1
2
3
Configuration configuration = new Configuration(Resources.Configuration);
configuration.Locale = new Locale("en");
Resources.UpdateConfiguration(configuration, null);
Далее возникает вопрос, как обновить все элементы UI с новой локалью? Нашел два возможных варианта:
1. После смены языка вызвать
C#
1
Recreate();
. Тогда активити полностью пересоздастся полным циклом с OnCreate и т.д. Однако в этом случае происходит заметное мигание.
2. Вместо Recreate();, вызывать
C#
1
SetContentView(Resource.Layout.main);
. В этом случае сама активити не пересоздается, а создаются только элементы UI. Мигание не заметно, по крайней мере с двумя текстовыми полями и парой кнопок. В это случае получение ссылок на элементы UI переношу из OnCreate в OnContentChanged:
C#
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
public override void OnContentChanged()
        {
            base.OnContentChanged();
            _rgLangs = FindViewById<RadioGroup>(Resource.Id.rgLanguages);
            _textView = FindViewById<TextView>(Resource.Id.textView2);
//_rgLangs - RadioGroup с двумя переключателями языка
            _rgLangs.Check(Resources.Configuration.Locale.Language == "ru" ? Resource.Id.rbLangRus : Resource.Id.rbLangEng);
            _rgLangs.CheckedChange += (o, e) =>
            {
                Configuration configuration = new Configuration(Resources.Configuration);
                switch (e.CheckedId)
                {
                    case Resource.Id.rbLangEng:
                        configuration.Locale = new Locale("en");
                        break;
                    case Resource.Id.rbLangRus:
                        configuration.Locale = new Locale("ru");
                        break;
                    default:
                        configuration.Locale = new Locale(Resources.Configuration.Locale.Language);
                        break;
                }
                Resources.UpdateConfiguration(configuration, null);
                SetContentView(Resource.Layout.main);
            };            
        }
Собственно вопрос к знатокам: насколько "эстетично" такое решение и возможно есть другие, более элегантные, способы смены языка приложения "на лету" (вариант с создание функции, в которой каждому элементу UI будет программно будет присваиваться значение из ресурсов не предлагать )?

Добавлено через 26 минут
Второй вопрос касается БД. Есть несколько готовых БД SQLite под разные языки. Есть некий класс, для управления БД на основе SQLiteConnection, который принимает в конструктор путь к БД:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 public class DatabaseManager
    {
        public string DbPath { get; private set; }
        public DatabaseManager(string dbPath)
        {
            DbPath = dbPath;
            using (var connection = new SQLiteConnection(DbPath))
            {
                connection.CreateTable<Question>();
                connection.CreateTable<Answer>();
            }
        }
}
Соответственно, при смене языка надо подгрузить нужную БД. Вопрос, каким образом их добавить в решение? Добавить в Assets или raw? Можно ли получить полный путь к ним или нужно будет копировать БД во внутреннюю память устройства у потом работать с ней?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru