Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
korsaj
148 / 117 / 9
Регистрация: 16.08.2013
Сообщений: 539
1

Ошибки при востановление активити после уничтожения

13.10.2013, 23:35. Просмотров 762. Ответов 6
Метки нет (Все метки)

Странное поведение андроида при переходе планшета в дежурный режим (черный экран).
Есть приложение, на главном активити 8 кнопок. Первые четыре (в таком же порядке инициализируются) именованные последующие четыре с именами Button1, Button2, Button3, Button4.
При запуске приложения все работает, переходы в другое активити и возврат обрабатывается без ошибок, а вот при переходе планшета в дежурный режим Button4 = null после строки Button4 = (Button) findViewById(R.id.button4);
Пробовал менять местами строки Button3 и Button4:
Java
1
2
Button4  = (Button) findViewById(R.id.button4);
Button3  = (Button) findViewById(R.id.button3);
Все равно Button4 = null
Вышел из ситуации вот так
Java
1
2
Button4  = (Button) findViewById(R.id.button4);
if (Button4 != null) Button4.setOnClickListener(this);
И получил интересную зависимость - при восстановление активити после уничтожения получаю Button4 = null, а при выходе из дежурного режима Button4 присваивается ссылка.
Подскажите в чем проблема?
Вот скриншот лога:
0
Миниатюры
Ошибки при востановление активити после уничтожения  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2013, 23:35
Ответы с готовыми решениями:

Мигает активити после сплешскрина
Есть сплешскрин взятый с какого то сайта, он работает отлично public class...

На телефоне highscreen 3 на всех активити происходит быстрый самовозврат к главной активити
Сделал меню в виде ListView. При клике на меню запускаются активити. На...

Как вызвать метод в активити классе из обычного не активити класса?
Есть активити в котором вводятся логин и пароль. При нажатии кнопки "войти" в...

Выполнение действия сразу после запуска активити
Ситуация такова. Есть Активити в активити лежит TabLayout +ViewPager в который...

Запуск таймера после закрытия второй Активити
Есть две Активити, на первой есть Chronometer. При запуске активити1...

6
Vladimirys
312 / 209 / 27
Регистрация: 16.01.2010
Сообщений: 610
13.10.2013, 23:56 2
Проблема в жизненном цикле приложения. Нужно весь код смотреть.
0
korsaj
148 / 117 / 9
Регистрация: 16.08.2013
Сообщений: 539
14.10.2013, 14:54  [ТС] 3
Проблема оказывается в xml-ском layout-файлe (разметке). Помогите ее решить.
В общем проблема описанная в первом посту возникала из-зи того что я использую приложение только в layout-land
XML
1
android:screenOrientation="landscape"
и соответственно на каком-то этапе написания перестал заполнять layout файлы отвечающие за книжную ориентацию. Так вот жизненный цикл активити (при восстановлении в фоне, после уничтожения сборщиком мусора) цепляет соответствующий layout файл для Portrait, а в нем нет кнопки Button4.
Помогите, подскажите как сделать так чтобы андроид не вспоминал о книжной ориентации?
0
Slon747
59 / 37 / 2
Регистрация: 24.08.2013
Сообщений: 516
14.10.2013, 15:32 4
Цитата Сообщение от korsaj Посмотреть сообщение
Проблема оказывается в xml-ском layout-файлe (разметке). Помогите ее решить.
В общем проблема описанная в первом посту возникала из-зи того что я использую приложение только в layout-land
XML
1
android:screenOrientation="landscape"
и соответственно на каком-то этапе написания перестал заполнять layout файлы отвечающие за книжную ориентацию. Так вот жизненный цикл активити (при восстановлении в фоне, после уничтожения сборщиком мусора) цепляет соответствующий layout файл для Portrait, а в нем нет кнопки Button4.
Помогите, подскажите как сделать так чтобы андроид не вспоминал о книжной ориентации?
В манифесте для активити прописать "android:screenOrientation="landscape"
Ой. Я наверное не то сказал.
0
korsaj
148 / 117 / 9
Регистрация: 16.08.2013
Сообщений: 539
14.10.2013, 18:02  [ТС] 5
Ну не совсем не то.. Просто повторил.
Вот я еще нашел, попробую вставить обработчик в оnCreate.

Добавлено через 1 час 57 минут
Не помогло, все равно он вначале грузит книжную ориентацию.
0
Netscape
374 / 361 / 52
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
14.10.2013, 18:52 6
Можно попробовать программно повернуть экран в onConfigurationChanged.
0
korsaj
148 / 117 / 9
Регистрация: 16.08.2013
Сообщений: 539
14.10.2013, 20:03  [ТС] 7
Повернуть до открытия файла разметки?
Я еще думаю о проверки наличия лайот файла до его загрузки, и если он не существует, не грузить его.
Либо проверять состояние экрана и выбирать грузить лайот файл или не надо.

Добавлено через 32 минуты
Метод onConfigurationChanged не вызывается, так как смена ориентации запрещена в манифесте.
Проверить наличие лайот файла не представляется возможным так как он всегда есть (у них один id на два лайот файла).

Добавлено через 8 минут
А вот метод getResources().getConfiguration().orientation работает.
Еще есть идея, ща проверю отпишусь.

Добавлено через 16 минут
Ну и последнее решение: не надо было мне балбесу создавать папку layout-land. По умолчанию андроид берет файл разметки из папки layout и не важно как ориентирован экран!
0
14.10.2013, 20:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.10.2013, 20:03

Запрет поворота экрана после создания активити
Как сделать сабж? Если в onCreate вызываю : setRequestedOrientation(...

Приложение вылетает после перехода на второе активити
Здравствуйте! Помогите разобраться с причиной вылета второго активити. Код...

Приложение вылетает после перехода на новое активити
Здравствуйте, уважаемые программисты! Не могли бы вы мне помочь? Программа...


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

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

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