Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
syslik
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 38
#1

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

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

Доброго времени суток.
У меня есть 2 xml layout файла для вертикальной и горизонтальной ориентации дисплея c тем самим набором елементов. После нажатие клавиши я меняю текст в TextView следующим образом:
Java
1
((TextView) findViewById(R.id.mytextview)).setText(mytext);
Все работает хорошо. Но после того, как я меняю ориентацию дисплея, и пробую менять текст mytextview - он не меняеться. Ошыбки(Exception) нет, код выполняється, но нового текста не выводит.
Спасибо.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2015, 16:41
Ответы с готовыми решениями:

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

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

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

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

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

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

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
syslik
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 38
05.06.2015, 23:46  [ТС] #6
Заработало! Ура!

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

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

Спасибо за помощь.
0
05.06.2015, 23:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2015, 23:46

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

Задний фон при смене ориентации экрана
Здравствуйте! Мне надо чтобы фон не сжимался так, а как в HTML оптимизировал...

SurfaceView при изменении ориентации экрана перегружается
при создании тетриса возник вопрос. один из моих классов расширяет класс...


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

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

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