Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
korsaj
148 / 117 / 9
Регистрация: 16.08.2013
Сообщений: 539
#1

Ошибки при востановление активити после уничтожения - Программирование Android

13.10.2013, 23:35. Просмотров 730. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибки при востановление активити после уничтожения (Программирование Android):

Мигает активити после сплешскрина - Программирование Android
Есть сплешскрин взятый с какого то сайта, он работает отлично public class SplashScreen extends Activity { private static String...

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

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

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

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

Запрет поворота экрана после создания активити - Программирование Android
Как сделать сабж? Если в onCreate вызываю : setRequestedOrientation( ActivityInfo.SCREEN_ORIENTATION_NOSENSOR); И если...

6
Vladimirys
310 / 207 / 25
Регистрация: 16.01.2010
Сообщений: 603
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 / 1
Регистрация: 24.08.2013
Сообщений: 466
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 / 48
Регистрация: 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
Привет! Вот еще темы с ответами:

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

Не отображается игровое поле после выхода из другого активити - Программирование Android
Когда я выхожу из другого активити и пытаюсь зайти в игру,котороe у меня в главном активити,игровое поле не отображается. вот мой код.в...

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

Как изменится стек после вызова активити другого приложения - Программирование Android
Если у меня есть 2 задачи(2 Task) и я из первой задачи вызову активити, которое находится в стеке второй задачи, то у меня то активити...


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

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

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