Обнаружить, что активность закрылась в Android - PullRequest
8 голосов
/ 26 августа 2011

В моем приложении мне нужно запустить SelectionActivity, чтобы выбрать один из вариантов.После выбора опции мне нужно обновить другой список в MainActivity.

Это код, который я использую для запуска SelectionActivity:

Intent intent = new Intent(MainActivity.this, SelectionActivity.class);
startActivity(intent);

В SelectionActivity это код, которыйполучает выбранную опцию и закрывает действие:

selectedValue = adapter.getItem(position);
finish();

Теперь приложение возвращается в MainActivity, но я не знаю, как получить событие, которое SelectionActivity закрыло.

Спасибо

Ответы [ 6 ]

12 голосов
/ 09 августа 2012

Быстрый фрагмент, показывающий использование startActivityForResult :

private static final int MY_REQUEST_CODE = 0xe110; // Or whatever number you want
// ensure it's unique compared to other activity request codes you use

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

    if (requestCode == MY_REQUEST_CODE)
        ActiviyFinishedNowDoSomethingAmazing();
}

public void onClickStartMyActivity(View view)
{
    startActivityForResult(new Intent(this, GameActivity.class), MY_REQUEST_CODE);
}

Дополнительные сведения о получении результата от действия .

1 голос
/ 26 августа 2011

Решение 1:

  1. Сделать selectedValue статической общедоступной переменной.
  2. В вашем MainActivity:

    void onResume() {
            result = SelectionActivity.selectedValue;
    }
    

Решение 2:

Если задание SelectionActivity представляет собой просто выбор из нескольких вариантов, рассмотрите возможность использования Dialogs

1 голос
/ 26 августа 2011

В зависимости от дизайна вашего приложения вы можете обновлять список каждый раз, когда возвращается основное действие, наблюдая за событиями onResume () или onRestart (). Кроме того, есть startActivityForResult (). Все эти методы в Activity.

0 голосов
/ 26 августа 2011
0 голосов
/ 26 августа 2011

Используйте onActivityResult () или сделайте selectedValue статическим. В MainActivity используйте метод onResume:

protected void onResume() {
    if(SelectionActivity.selectedValue != 0)
          newValue = SelectionActivity.selectedValue;
}
0 голосов
/ 26 августа 2011

startActivityForResult (), затем переопределите метод onActivityResult ().Есть много примеров, которые можно найти в Google, просто используя ключевое слово startactivityforresult.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...