Как закончить родительскую активность от детской активности - PullRequest
21 голосов
/ 12 марта 2012

Я новичок в разработке для Android.

Я создал основную активность (-> A), которая имеет 4 кнопки. Одна из 4 кнопок - кнопка EXIT.

Я запускаю другое действие (-> B), по нажатию кнопки EXIT. Это открывает «B'Activity» через намерение от «A'Activity».

Задание «B» содержит - Вы хотите выйти? Кнопка Да и Кнопка Нет.

Если я дам Finish (), нажмите кнопку - она ​​выйдет из режима «B». Я хочу закончить "B" и "A".

Я даже пробовал A.finish () -> это не распознается и приводит к синтаксической / семантической ошибке.

Буду признателен за помощь.

P.S .: Я использую телефон версии Android-2.2, и мне не нравится использовать ActivityManager для решения этой проблемы.

Ответы [ 3 ]

49 голосов
/ 12 марта 2012

Попробуйте запустить дочернюю активность с

 startActivityForResult(intent, REQUEST_EXIT);

В дочерней активности

case R.id.quit:
     setResult(RESULT_OK, null);
     finish();

В родительской активности

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == REQUEST_EXIT) {
         if (resultCode == RESULT_OK) {
            this.finish();

         }
     }
}
6 голосов
/ 12 марта 2012

используйте startActivityForResult() в Действие A для начала действия B и onActivityResult() в A просто finish() Действие A. В операции B на кнопке нажимается только finish() Действие B .

5 голосов
/ 12 марта 2012

Вы можете завершить родительские действия из дочерних действий, как ...

В родительском ....

 startActivityForResult(new Intent(Parent.this, Child.class), ACTIVITY_CONSTANT);

И переопределить метод OnActivityForResult (...) в Parent.

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == ACTIVITY_CONSTANT)
    {
        finish();
    }
}

Когда вы вызываете finish () для дочернего действия, оно также завершает родительское действие.

...