2014-10-23 2 views
1

Как я могу передать дополнительные услуги для предыдущей работы в backstack? Когда пользователь нажимает кнопку назад, я хотел бы сделать что-то вроде:Выполнение дополнительных действий для деятельности по backstack (on BACK press)

intent.putExtra("playlist", playlist); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

Я предполагаю, что это должно быть в OnStop() метод, но как я могу определить действие, которое будет возобновлено? Я нашел что-то вроде getParentActivityIntent(), но я не могу понять документацию четко, и я не знаю, нужно ли мне это.

----- EDIT ------

Я попытаюсь объяснить это иначе.

в ActivityA я начинаю новый ActivityB и передать некоторые Extra:

Intent intent = new Intent(this, ActivityB.class); 
int var = 3; 
intent.putExtra("var", var); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 

в ActivityB я могу сделать:

if (getIntent().hasExtra("var")) { 
    var = getIntent().getIntExtra("var"); 
    var = var + 2;   
} 

Теперь после нажатия кнопки НАЗАД пользователь вернуться к ActivityA. Где var = 3. Но я хотел бы передать новое значение var из ActivityB. Я бы хотел иметь в ActivityA var = 5. Как я могу это сделать? Я не могу найти в документации ссылку на «предыдущую» активность (в данном случае на ActivityA из ActivityB).

+0

Код, который вы опубликовали, не ясен. Где это? В «Деятельности» или в «Фрагменте»? – Squonk

+0

Это в действии. Обычно я использую его, когда начинаю новую деятельность. ех. после некоторого действия (выбор элемента списка, нажатие кнопки программного обеспечения и т. д.). Теперь я хотел бы сделать то же самое для фиксической кнопки возврата. – Malvinka

ответ

2

Я думаю, что то, что вы пытаетесь сделать, невозможно, но у вас есть как минимум два варианта.

Не использовать startActivity, но использовать startActivityForResult в ActivityA и переопределить onActivityResult. В деятельности B вы должны реализовать в onBackPressed что-то вроде этого:

Intent returnIntent = new Intent(); 
returnIntent.putExtra("result",result); 
setResult(RESULT_OK,returnIntent); 
finish(); 

Подробнее: How to manage `startActivityForResult` on Android?

Второй вариант заключается в создании общей переменной во время всего приложения (например by extend android.app.Application class). Установите эту переменную в ActivityB и прочитайте в ActivityA.

+0

Кажется, что он будет работать (я использовал первое решение). Однако я столкнулся с другой проблемой, поэтому я должен ее решить, чтобы убедиться, что все в порядке с этим. В любом случае, спасибо за ваше время! – Malvinka

+0

Все в порядке, если это поможет, пожалуйста, примите ответ. Thanx. – vzoha