Кнопка вверх android

416
21 февраля 2017, 17:12

Есть активность(активность 1), она запускает другую(активность 2), причем передает некие данные влияющие на то что отображает дочерняя активность(активность 2). Эти данные она получает из интента. В свою очередь дочерняя активность(активность 2) запускает другую активность(активность 3). В манифесте активность 3 я прописал тег android:parentName в качестве параметра указал активность 2. И теперь вот в чем проблема. Запуская из активности 1 активность 2 - все хорошо, но если запускать активность 2 из активности 3 кнопкой вверх на панели сверху слева(стрелочка) то активность 2 не получает нужные данные из-за чего не может отобразить данные и происходит ошибка. Сначала я подумал что эту проблему можно решить методами startActivityForResult() и setResult() вроде написал все правильно но что-то не выходит. Либо так не сработает либо я неправильно написал(прошу этот момент уточнить, возможно ли решить эту проблему таким образом). А потом я подумал о том что, должен быть способ переопределить событие при нажатии этой кнопки, но как я не знаю(это второй момент который прошу мне разъяснить).

Answer 1

C учетом замечания @pavlofff меняю ответ.

Если в третьей активности Вы используете android.support.v7.widget.Toolbar toolbar, то по нажатию на кнопку "Вверх" следующий код вернется ко второй активности, передав ей строку:

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    if (getSupportActionBar() != null) {
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.putExtra("STRING_TO_PASS", "Some string");
                setResult(RESULT_OK, intent);
                finish();
            }
        });
    }

То есть метод setDisplayHomeAsUpEnabled() устанавливает картинку "стрелка влево" на левой кнопке, но она по-прежнему остается кнопкой навигации, и слушатель на нее устанавливается методом setNavigationOnClickListener().

READ ALSO
Как вывести массив в обратном порядке без использования length

Как вывести массив в обратном порядке без использования length

Создаётся массив целых чиселНужно вывести массив в обратном порядке

634
Нужна библиотека для оплаты в Android

Нужна библиотека для оплаты в Android

Во многих приложениях есть возможность оплачивать деньги через Qiwi, WebMoney, Visa ит

340
Что такое Hazelcats и с чем его едят?

Что такое Hazelcats и с чем его едят?

Добрый деньСижу в проекте где используется Hazelcast

827
Загрузка файлов через контроллер

Загрузка файлов через контроллер

Есть контроллер через который проходят все входящие запросы на серверЕсть сервлет для загрузки файлов

347