Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
436 / 161 / 28
Регистрация: 12.12.2020
Сообщений: 1,279

Отловить возврат из Activity через кнопку "назад"

22.11.2024, 21:48. Показов 1650. Ответов 8

Студворк — интернет-сервис помощи студентам
Из mainActivity запускается secondActivity. При запуске в нее передаются параметры. Из нее открываем третью активити а потом жмем кнопку "назад". Так вот. При возврате в secondActivity разумеется никаких параметров уже нет. Мне же нужно что бы она открылась с прежними параметрами.

Какие варианты есть? Перехватывать нажатие кнопки назад и там имитировать "штатное" закрытие активити и параметры формировать? Или сохранять где то параметры и если на вход ничего не дали то считать что это возврат и вытаскивать сохраненные параметры?

Добавлено через 12 минут
И кстати че то я вот такой момент не понимаю. Вот secondActivity

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_chat);
 
       ...
 
        Bundle extras = getIntent().getExtras();
        if(extras!=null){
            
            ident=extras.getString("ident");
        } else {
            Toast.makeText(this, "Не передали параметры в secondaryActivity", Toast.LENGTH_SHORT).show();
            Log.v("myLogs","Не передали параметры в secondaryActivity");
            finish();
        }
 
        Log.v("myLogs","работаем");
Так вот. finish() почему то не закрывает активити. В лог выводится что не передали параметры а потом код выполняется дальше. Как ее закрыть то?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.11.2024, 21:48
Ответы с готовыми решениями:

Как передавать данные в предыдущее activity, используя кнопку назад в action bar?
Я сделал кнопку назад ,прописав в manifest файле(как здесь http://developer.android.com/training/implementing-navigation/ancestral.html) ...

Как вызвать Fragment из Activity через кнопку?
Добрый день! Не могу вызвать Фрагмент из Активити. У меня есть главная активность и есть Фрагмент. И мне путем нажатия кнопки на главной...

Как изменить кнопку на втором Activity с первого Activity в Android Studio?
Общая задача сделать уровни для игры, по окончанию первого уровня, появляется кнопка "выбор уровня" по нажатию которой,...

8
 Аватар для Azathtot
754 / 351 / 90
Регистрация: 07.01.2023
Сообщений: 1,451
23.11.2024, 10:16
Цитата Сообщение от Alex1126 Посмотреть сообщение
а потом код выполняется дальше.
есть такое слово, return

Добавлено через 1 минуту
Цитата Сообщение от Alex1126 Посмотреть сообщение
Мне же нужно что бы она открылась с прежними параметрами.
onSaveInstanceState для кого придумали?
0
436 / 161 / 28
Регистрация: 12.12.2020
Сообщений: 1,279
23.11.2024, 17:45  [ТС]
Цитата Сообщение от Azathtot Посмотреть сообщение
есть такое слово, return
это же выход из функции/метода. Мне нужно активити закрыть

Добавлено через 14 минут
Цитата Сообщение от Azathtot Посмотреть сообщение
onSaveInstanceState для кого придумали?
Для смены ориентации экрана. У меня при открытии новой активити состояние сохраняется, но когда на новой активити жмешь "назад" то оно не восстанавливается и savedInstanceState равен Null.
0
 Аватар для Azathtot
754 / 351 / 90
Регистрация: 07.01.2023
Сообщений: 1,451
24.11.2024, 09:01
Цитата Сообщение от Alex1126 Посмотреть сообщение
это же выход из функции/метода. Мне нужно активити закрыть
а вы что думаете, что finish() прям прекращает работу? Тогда ставьте его последним в onCreate()
Java
1
2
3
4
5
6
7
8
9
10
11
12
 @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.updater);
                if(getIntent().hasExtra("packages")) {
                        _packages = getIntent().getStringArrayListExtra("packages");
                        if(_packages != null && !_packages.isEmpty()) {
                                return;
                        }
                }
                finish();
        }
Цитата Сообщение от Alex1126 Посмотреть сообщение
то оно не восстанавливается и savedInstanceState равен Null.
Еще раз. Активити при возврате пересоздается? Если нет, то естественно он будет null. Смотрите жизненный цикл активити.
0
436 / 161 / 28
Регистрация: 12.12.2020
Сообщений: 1,279
24.11.2024, 19:50  [ТС]
Цитата Сообщение от Azathtot Посмотреть сообщение
а вы что думаете, что finish() прям прекращает работу? Тогда ставьте его последним в onCreate()
честно говоря так и думал

Цитата Сообщение от Azathtot Посмотреть сообщение
Активити при возврате пересоздается? Если нет, то естественно он будет null. Смотрите жизненный цикл активити.
пересоздается, но savedInstanceState null
0
 Аватар для Azathtot
754 / 351 / 90
Регистрация: 07.01.2023
Сообщений: 1,451
25.11.2024, 07:15
Цитата Сообщение от Alex1126 Посмотреть сообщение
пересоздается, но savedInstanceState null
Значит оно не пересоздается, а создается по-новой. Проверяйте жизненные циклы
0
436 / 161 / 28
Регистрация: 12.12.2020
Сообщений: 1,279
25.11.2024, 21:30  [ТС]
Так как восстановить ранее переданный интент? Или отловить возврат через кнопку назад? Или сохранять где то в настройках значение и если на входе пусто то брать оттуда?
0
 Аватар для Azathtot
754 / 351 / 90
Регистрация: 07.01.2023
Сообщений: 1,451
25.11.2024, 23:44
Цитата Сообщение от Alex1126 Посмотреть сообщение
Так как восстановить ранее переданный интент?
Никак, если вы его не сохранили "вручную"
Цитата Сообщение от Alex1126 Посмотреть сообщение
Или отловить возврат через кнопку назад?
вы можете только отловить нажатие назад в topmost активити через onBackPressed
P.S. Почитайте внимательно этот материал он вам поможет прояснить все моменты
0
436 / 161 / 28
Регистрация: 12.12.2020
Сообщений: 1,279
16.04.2025, 23:39  [ТС]
Вообщем смысл в следующем, как я понял. У меня в манифесте для третьей активити была прописана PARENT_ACTIVITY, что выводило кнопку "назад", но при нажатии на эту кнопку, на экране, эта PARENT_ACTIVITY вызывалась, то есть создавалась заново. Разумеется никакие интенты ей не передавались и это был "чистый" запуск. При этом когда нажимаешь кнопу назад на корпусе телефона то текущая активити заканчивала свою работу и нас "выкидывало" обратно во вторую.
То есть нам надо по нажатию кнопки "назад" на экране не вызывать PARENT_ACTIVITY а завершить текущую.
Для этого добавляем в активити следующий код:

Java
1
2
3
4
5
6
7
8
9
    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                this.finish();
                return true;
        }
        return super.onOptionsItemSelected(item);
    }
Что бы на активити отображалась кнопка "назад" можете либо через акшин бар либо в манифесте прописать

XML
1
2
3
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.example.application.SecondActivity" />
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.04.2025, 23:39
Помогаю со студенческими работами здесь

Назад к Activity из Preference
getFragmentManager().beginTransaction() .replace(android.R.id.content, new Preference()).commit(); вот таким...

Переход из фрагмента назад в activity
Всем привет! Может кто сталкивался в такой задачей. Есть activity из него переходим во фрагмент. Как осуществить переход из фрагмента...

Возврат на предыдущую Activity
Ребят, не получается вернуться на предыдущую активность. В классах каждой активити прописал @Override public void onBackPressed()...

Возврат на каталог назад
Как вернуться на каталог назад?т.е. например в таком теге: &lt;link rel = &quot;stylesheet&quot; type = &quot;text/css&quot; href =...

Возврат на страницу назад
Есть кнопка: &lt;form method=&quot;POST&quot;&gt; &lt;input type=&quot;submit&quot; name=&quot;button1&quot; value=&quot;Нажмите&quot; /&gt; &lt;/form&gt; Есть php-код: if...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru