Урок 24. Activity Lifecycle, пример смены состояний с двумя Activity
Re: Урок 24. Activity Lifecycle, пример смены состояний с дв
у Андроида есть такая бида, из-за того что памятью управляет не разработчик а Dalvik, то он там что то скапливает или плохо распределяет ресурсы, из-за этого Андроид много "жрёт" батарею, и по этому телефоны на Андроиде садятся очень быстро (бывает новые телефоны за пол дня садятся) и это одна из самых больных тем. Если же Dalvik была так же открыта как сама ОСь может и можно было бы что то предпринять, а так вижу что народ часто устанавилвает всякие сборщики мусора и освободители памяти что бы освобождать/закрывать не нужные программы.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 24. Activity Lifecycle, пример смены состояний с дв
Мне кажется тут @Override перед onClick лишний - мы же не переопределяем метод супер-класса, а реализуем метод интерфейса.
Если не прав - поправьте, зеленый еще в этом деле
Если не прав - поправьте, зеленый еще в этом деле
Re: Урок 24. Activity Lifecycle, пример смены состояний с дв
это зависит от апи версии а переопределение здесь не причём
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 24. Activity Lifecycle, пример смены состояний с дв
Порылся на сайте документации и нарыл вот это.
http://developer.android.com/reference/ ... rride.html
Привязку к версии API я не нашел, да и логики в том, чтобы нарушать прямую и обратную совместимость версий API не правильно имхо. В статье как раз про переопределение написано.
Можете привести пример версии API, в которой допускается @Override перед onClick (берется в расчет первое определение при реализации интерфейса OnClickListener как в примере урока)?
Я лично только что проверил в 8, 10 и 14 (больше было лень ) - везде начинает ругаться:
В принципе логично, если следовать логике ООП и реализации интерфейсов.
http://developer.android.com/reference/ ... rride.html
Привязку к версии API я не нашел, да и логики в том, чтобы нарушать прямую и обратную совместимость версий API не правильно имхо. В статье как раз про переопределение написано.
Можете привести пример версии API, в которой допускается @Override перед onClick (берется в расчет первое определение при реализации интерфейса OnClickListener как в примере урока)?
Я лично только что проверил в 8, 10 и 14 (больше было лень ) - везде начинает ругаться:
Код: Выделить всё
The method onClick(View) of type MainActivity must override a superclass method
Re: Урок 24. Activity Lifecycle, пример смены состояний с дв
Override это аннтотация компилятору о том что будет переопределён метод суперкласса. В большей степени зависит от настройки IDE. То есть если вы делаете переопределение скажем метода onResume() без аннотации то не гарантируется на 100% что он будет переопределён. Такая ошибка в основном может быть когда при запущенном приложении идёт звонок и активити переходит в паузу, то потом оно возможно не сможет восстановиться. Вот как то так.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 24. Activity Lifecycle, пример смены состояний с дв
Есть 2 активити. Основная и дополнительная.
На основной есть список
По длинному клику редактируются данные выбранного элемента. Редактирование на 2-й активити.
Пробую при закрытии 2-й активити обновить список и выполнить переход на тот же элемент списка.
Для примера на какой-нибудь элемент(последний)
Пробовал засунуть код перехода в
При запуске программа пишет ошибку
12-12 14:11:20.274: E/AndroidRuntime(790): java.lang.RuntimeException: Unable to resume activity {ru.mail.Simplydatabase_1/ru.mail.Simplydatabase_1.Simplydatabase_1Activity}: java.lang.NullPointerException
решил через доп.процедуру
и ее вызов в onResume(). Оказывается, переменная listContent , которую мы инициализировали в OnCreate уже не видится в OnResume
На основной есть список
Код: Выделить всё
ListView listContent = (ListView)findViewById(R.id.listContent);
Пробую при закрытии 2-й активити обновить список и выполнить переход на тот же элемент списка.
Для примера на какой-нибудь элемент(последний)
Пробовал засунуть код перехода в
Код: Выделить всё
@Override
protected void onResume() {
super.onResume();
Log.d("LOG_TAG", "MainActivity: onResume()");
this.listContent.setSelection(15);
}
12-12 14:11:20.274: E/AndroidRuntime(790): java.lang.RuntimeException: Unable to resume activity {ru.mail.Simplydatabase_1/ru.mail.Simplydatabase_1.Simplydatabase_1Activity}: java.lang.NullPointerException
решил через доп.процедуру
Код: Выделить всё
private void SelectedPosition(int ip){
listContent = (ListView)findViewById(R.id.listContent);
listContent.setSelection(ip);
Toast.makeText(
getApplicationContext(),
"Вы выбрали "
+ Abon_name+" position="+ip,
Toast.LENGTH_SHORT).show();
}
Re: Урок 24. Activity Lifecycle, пример смены состояний с дв
Странно, у меня, когда нажимаю кнопку go to activity two в логах
А ещё выходя из приложения пишет не...
ActivityTwo: onResume()
MainActivity: onPause() (вместо onStop() в вашем примере).
аMainActivity: onPause()
MainActivity: onStop()
MainActivity: onDestroy()
MainActivity: onPause()
MainActivity: onPause()
MainActivity: onDestroy()
Re: Урок 24. Activity Lifecycle, пример смены состояний с дв
А код точно мой скопировали полностью? Поведение очень похоже на ошибку копипаста, если сами код рисовалиVici писал(а):Странно, у меня, когда нажимаю кнопку go to activity two в логах
Re: Урок 24. Activity Lifecycle, пример смены состояний с дв
Здравствуйте. Подскажите, пожалуйста, как правильно сделать: есть активити 1 с картой и активити 2 в текстовым полем и кнопкой. При запуске показывается активити 1, из меню активити 1 можно перейти в активити 2, там кнопка, по которой идёт переход на активити 1 и там указывается место. Сейчас при переходе с кнопки активити 1 пересоздается. Вопрос: как правильно сделать, чтоб при переходе с меню активити 1 ставилась на "паузу", а при переходе с кнопки "возобновлялось"? Если я правильно выразился.
Re: Урок 24. Activity Lifecycle, пример смены состояний с дв
а как вы делаете переход со второй активити в первую? наверное startActivity?
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 24. Activity Lifecycle, пример смены состояний с дв
Да.rezak90 писал(а):а как вы делаете переход со второй активити в первую? наверное startActivity?
Код: Выделить всё
Intent intent = new Intent(this, Activity1.class);
startActivity(intent);
Re: Урок 24. Activity Lifecycle, пример смены состояний с дв
вы и ответили на свой вопрос))) вы же создаёте новое активити. Убиваете воторую finish(), вторая убъётся и со стека вызовится предыдущая, то есть первая.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 24. Activity Lifecycle, пример смены состояний с дв
Что-то я не понял когда я перехожу из 1 на 2, мне 1 нужно убить?rezak90 писал(а):вы и ответили на свой вопрос))) вы же создаёте новое активити. Убиваете воторую finish(), вторая убъётся и со стека вызовится предыдущая, то есть первая.
когда из 2 на 1 убить 2 ?
Мне нужно из меню 1 перейти в 2, оттуда перейти в 1 взять координаты точки, и с ними потом вернуться в 2 с результатом
Re: Урок 24. Activity Lifecycle, пример смены состояний с дв
Или когда перехожу из 1 в 2 ничего не убивать, а когда из 2 в 1, то 2 убить? Так?
На кнопке в активити 2 такой код?
На кнопке в активити 2 такой код?
Код: Выделить всё
Intent intent = new Intent(this, Activity1.class);
startActivity(intent);
finish();
Последний раз редактировалось Digetix 07 фев 2013, 23:24, всего редактировалось 1 раз.
Re: Урок 24. Activity Lifecycle, пример смены состояний с дв
так
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 24. Activity Lifecycle, пример смены состояний с дв
Что не так. При запуске приложения идёт проверка включен ли GPRS.
Переход из 1 в 2
Переход из 2 в 1
При этом при переходе из 2 в 1 снова включается проверка на включение GPRS, я так понимаю, что 1 снова создается.
Или лучше сделать проверки на первый запуск приложения?
Переход из 1 в 2
Код: Выделить всё
Intent intent = new Intent(this, Activity2.class);
startActivity(intent);
Код: Выделить всё
Intent intent2 = new Intent(this, Activity1.class);
startActivity(intent2);
finish();
Или лучше сделать проверки на первый запуск приложения?
Re: Урок 24. Activity Lifecycle, пример смены состояний с дв
мда...
Переход из 2 в 1:
P.S. такой себе вопросик: на телефоне нету кнопки back?
Переход из 2 в 1:
Код: Выделить всё
finish();
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 24. Activity Lifecycle, пример смены состояний с дв
Есть. Мне ж нужно не просто туда-сюда по активити переходить. Мне нужно по кнопке переходить. А вы предлагаете этой кнопкой просто убить её и поднять первую. Или я что-то недопонимаю. Объясню смысл приложения. Запускается первое активити с картой, отображается текущее положения пользователя. В Меню есть кнопка Добавить точку. По ней пользователь переходит на активити 2, там заполняет текстовые поля, добавляет фото и там же есть кнопка указать место на карте, по ней нужно вернуться в карту (то есть активити 1), взять координаты точки и с этими координатами вернуться в 2. А если я убью 2 при возврате в 1, то все текстовые данные уничтожаться. Так?rezak90 писал(а):мда...
Переход из 2 в 1:P.S. такой себе вопросик: на телефоне нету кнопки back?Код: Выделить всё
finish();
Re: Урок 24. Activity Lifecycle, пример смены состояний с дв
во второй да, уже данных не будетА если я убью 2 при возврате в 1, то все текстовые данные уничтожаться. Так?
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 24. Activity Lifecycle, пример смены состояний с дв
Ну а можно сделать так, чтоб с 1 на 2, с 2 на 1, взять данные, и снова на 2, при этом не плодить активити и данные сохранить?rezak90 писал(а):во второй да, уже данных не будетА если я убью 2 при возврате в 1, то все текстовые данные уничтожаться. Так?