Обнаружить, что активность закрыта в Android

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

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

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

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

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

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

благодаря

Посмотрите в startActivityForResult ()

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

 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 0xe110) ActiviyFinishedNowDoSomethingAmazing(); } public void onClickStartMyActivity(View view) { startActivityForResult(new Intent(this, GameActivity.class), 0xe110); } 

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

Решение 1:

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

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

Решение 2:

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

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

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

 protected void onResume() { if(SelectionActivity.selectedValue != 0) newValue = SelectionActivity.selectedValue; }