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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
syslik
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 38
#1

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

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

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

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

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

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

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

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

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

Не отображать SplashScreen при смене ориентации экрана - Программирование Android
Не могу понять как сделать чтобы сплэш не появлялся снова при смене ориентации экрана? + подскажите, почему при горизонтальной...

При смене ориентации экрана накладываются фрагменты - Программирование Android
Юзаю Android.Support.V4.App.Fragment, вроде бы все нормально. При переключении из меню фрагменты скрываю отправляя в "стек" а кликнутый...

Выбрасывает из приложения при смене ориентации экрана - Программирование Android
Здравствуйте. Следующая проблема. Создал папку layout-land в папке res. И при добавлении туда вот этого файла xml: <LinearLayout...

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

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

SurfaceView при изменении ориентации экрана перегружается - Программирование Android
при создании тетриса возник вопрос. один из моих классов расширяет класс SurfaceView public class TetrisView extends SurfaceView ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,725
07.05.2015, 00:30     Поведение после смены ориентации экрана #2
syslik, привет, не очень понятно, что не работает. Попробуйте вместо mytext написать, например, "Привет!" и проверить. Если выводит, значит, проблема в переменной. Надо сохранять и восстанавливать значение через метод onSaveInstanceState.
syslik
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 38
09.05.2015, 16:51  [ТС]     Поведение после смены ориентации экрана #3
Проблема не в переменной. При дебаге я вижу значение переменной, но ее значение не выводиться в TextView.
Все хорошо работает до того времени как я поворачиваю екран. Потом провожу такие же действия как и раньше, но TextView не работает, не выводит новых текстов. Может проблема в том что у меня есть 2 xml лейаута для разной ориентации с елементами с таким же ІД и так делать не надо...не знаю даже.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,725
11.05.2015, 01:30     Поведение после смены ориентации экрана #4
syslik, тогда покажите оба xml с разметкой. Они должны быть достаточно похожи, иначе программа может обращаться не к тем элементам после смены ориентации экрана. После смены выполняется повторно весь цикл жизнедеятельности активности: onCreate, onResume, onStart и т.д. Поглядите, как там инициализируются переменные.
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 работает так как нужно).

Хотел попробовать написать маленькую тестовою програму чтоб воспроизвести такое же поведение..но не смог...в тестовой програме все работает хорошо (
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

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

Спасибо за помощь.
Yandex
Объявления
05.06.2015, 23:46     Поведение после смены ориентации экрана
Ответ Создать тему
Опции темы

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