Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 38

Поведение после смены ориентации экрана

04.05.2015, 16:41. Показов 1528. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
У меня есть 2 xml layout файла для вертикальной и горизонтальной ориентации дисплея c тем самим набором елементов. После нажатие клавиши я меняю текст в TextView следующим образом:
Java
1
((TextView) findViewById(R.id.mytextview)).setText(mytext);
Все работает хорошо. Но после того, как я меняю ориентацию дисплея, и пробую менять текст mytextview - он не меняеться. Ошыбки(Exception) нет, код выполняється, но нового текста не выводит.
Спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.05.2015, 16:41
Ответы с готовыми решениями:

GoogleMap. Восстановление карты после смены ориентации экрана
GoogleMap V2. Через onSaveInstanceState / onRestoreInstanceState восстанавливаю тип карты, маркеры и положение камеры. Но может есть...

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

Изменение ориентации экрана
здравствуйте. возник вопрос,допустим я программно запретил изменения экрана ...

5
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
07.05.2015, 00:30
syslik, привет, не очень понятно, что не работает. Попробуйте вместо mytext написать, например, "Привет!" и проверить. Если выводит, значит, проблема в переменной. Надо сохранять и восстанавливать значение через метод onSaveInstanceState.
0
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 38
09.05.2015, 16:51  [ТС]
Проблема не в переменной. При дебаге я вижу значение переменной, но ее значение не выводиться в TextView.
Все хорошо работает до того времени как я поворачиваю екран. Потом провожу такие же действия как и раньше, но TextView не работает, не выводит новых текстов. Может проблема в том что у меня есть 2 xml лейаута для разной ориентации с елементами с таким же ІД и так делать не надо...не знаю даже.
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
11.05.2015, 01:30
syslik, тогда покажите оба xml с разметкой. Они должны быть достаточно похожи, иначе программа может обращаться не к тем элементам после смены ориентации экрана. После смены выполняется повторно весь цикл жизнедеятельности активности: onCreate, onResume, onStart и т.д. Поглядите, как там инициализируются переменные.
0
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 38
04.06.2015, 20:12  [ТС]
Сорри, не видел Вашего ответа.

xml разметки у меня почти идентичнЬІ. Разница только в том, то в лендскейпе компонентЬІ размещаються горизонально, а в портреит - вертикально. Там тупо копипаст, поменял просто android:orientation для LinearLayout.

Метод onCreate следующий:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_pult);
  ....
  refreshDisplay();
}
 
private void refreshDisplay() {
  runOnUIThread(new Runnable() {
    @Override
    public void run() {
      MyData obj = MyData.getInstance();
 
      ((TextView)findViewById(R.id.mytextview)).setText(obj.getText());
    }
  });
}
Интересная ситуация происходит при следуещих оперициях:
1. Запускаю програму (Пусть будет вертикалнЬІ дисплей).
2. Нажимаю кнопку, которая меняет текст MyData, вЬІзЬІвает рефреш дисплея, и новЬІй текст вЬІводиться на екране. Все пока хорошо.
3. Поворачиваю екран. ВЬІзиваеться рефреш дисплея из метода onCreate. TextView отображает текст из обекта MyData. Все хорошо.
4. Опять нажимаю кнопку, которая меняет текст MyData, вЬІзЬівает рефреш дисплея, но новЬІй текст не вЬІводиться в TextView. Там остаеться старЬІе текст. Но при дебаге после задания текст я пробую сразу получить что находиться в TextView. И там находить новЬІй текст. Но отображается по прежднему старЬІй текст.
5. Поворачиваю екран опять. ВЬІполняеться то что же и в пункте 3. Тоесть начинает отображаться новое значение из MyData.
6. Нажимаю на кнопку сменЬІ текста, происходит поведение как при пункте 4.
Тоесть после первого вращения екрана, TextView оновляеться только после следующих вращениях (только тогда метод refreshDisplay работает так как нужно).

Хотел попробовать написать маленькую тестовою програму чтоб воспроизвести такое же поведение..но не смог...в тестовой програме все работает хорошо (
0
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 38
05.06.2015, 23:46  [ТС]
Заработало! Ура!

Суть в том, что я жду новЬІе даннЬІе от сервера. Когда даннЬІе поступают от сервера, вЬІзЬІваю соответсвеннЬІй метод для подписанЬІх на данное собЬІтие активности. Что-то такое:
Java
1
2
3
for(ICommunication item: listeners) {
  item.receiveData(data); //item - моя активити
}
Мой метод onCreate содержЬІт следующую логику: Если соединения еще нет (програма включаеться первЬІй раз) - тогда нужно установить соединение и подисЬІваем нашу аквити на даное собЬІтие. Если соединение уже есть (поворот дисплея), то ничего не делаем, просто сохраням ссЬІлку на ето соединие.
Проблема бЬІла в том, что после поворота екрана активити, подписаное на прием данЬІе от сервера старое.
Нагуглил похожую проблему: http://stackoverflow.com/quest... een-rotate

Я говорил о нажатие кнопки для абстракции, типа просто делаеться действие, которое меняет текст. И вот на етом и попалился.

Спасибо за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.06.2015, 23:46
Помогаю со студенческими работами здесь

Смена ориентации экрана
в папке layout файл screen.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout ...

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

Смена ориентации экрана перезапускает приложение
Создаю на своем мобильном приложении. На очередном этапе заметил, что смена ориентации экрана как бы перезапускает приложение: отображаются...

Анимация при смене ориентации экрана
У меня есть анимация на фон с плавной сменой фона, но пир повороте анимация стартует занаво, из-за чего то выглядит ужастно ...

Потеря вывода при смене ориентации экрана
Калькулятор вывел результат в компонент textview. Стоит поменять ориентацию экрана и весь результат подсчета пропадает. :(


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru