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

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

22.11.2024, 21:48. Показов 1597. Ответов 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
425 / 147 / 27
Регистрация: 12.12.2020
Сообщений: 1,185
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
425 / 147 / 27
Регистрация: 12.12.2020
Сообщений: 1,185
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
425 / 147 / 27
Регистрация: 12.12.2020
Сообщений: 1,185
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
425 / 147 / 27
Регистрация: 12.12.2020
Сообщений: 1,185
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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru