2014-10-28 3 views
1

Я относительно новичок в Android, поэтому это ошеломило мой разум. В настоящее время у меня есть активность, которая открывает второе действие; второе действие позволяет вам выбрать из набора строк и, щелкнув один, действие закрывается.Код запуска после завершения намерения Действия

Активность называется так:

final Intent intent = new Intent(context, theActivity.class); 
    context.startActivity(intent); 

То, что я хочу быть в состоянии сделать, это запустить код, когда эта активность закрыта. В частности, я пытаюсь перезагрузить некоторые данные при закрытии активности. Примером потока будет

final Intent intent = new Intent(context, theActivity.class); 
    context.startActivity(intent); 
    DoStuffLikeReloadingData(foo bar); 

Проблема, конечно, является то, что DoStuffLikeReloadingData сразу проходит после начала деятельности, независимо от того, закончено или нет.

Так что мне было интересно: есть ли какое-то событие, которое я могу подключить к этому, будет срабатывать, когда активность закрывается, поэтому я могу делать то, что хочу там? Если нет, можете ли вы, ребята, подумать о том, как я мог бы отслеживать активность и запускать код, когда он закрывается или завершается, если он вызван таким образом?

Любая помощь будет замечательной! Спасибо.

ответ

2

Да, вы можете начать деятельность с целью просить результат с помощью метода startActivityForResult(Intent, int requestCode);, который будет вызывать onActivityResult(int requestCode, int resultCode, Intent data) метод своей деятельности, чтобы называться, когда вызываемая активность возвращается ,

Вот пример:

public static final int REQUEST_CODE_SOMETHING = 1001; 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data){ 
    if(requestCode == REQUEST_CODE_SOMETHING){ 
     // It came from our call 
     if(resultCode == Activity.RESULT_OK){ 
      // The result was successful 
      DoStuffLikeReloadingData(); // you can use the data returned by the Intent do figure out what to do 
     } 
    } 
} 

private void startActivity(){ 
    final Intent intent = new Intent(context, theActivity.class); 
    startActivityForResult(intent, REQUEST_CODE_SOMETHING); 
} 

Теперь вы можете открыть активность и выполнить операцию на результат. Если вы хотите передать данные или обратно из Activity, вы можете сделать это, добавив дополнительные функции в Intent через intent.putExtra(String key, Parcellable object).

Во второй операции вы должны вызвать метод setResult(int resultCode, Intent data) перед вызовом finish() для передачи данных обратно.

+0

Удивительный! У меня есть один вопрос: код результата. Я не знаю, что они будут выбирать; этот код результата нужен или это то, что я могу игнорировать? Я не совсем понимаю, что делает код результата и код запроса. –

+0

AH неважно! Думаю, теперь я понимаю. спасибо! –

+0

Рад, что я мог помочь! что касается кода результата, это то, что вы могли бы передать назад. например, если они что-то нажимают, вы должны использовать setResult (Activity.RESULT_OK, yourIntentDataToPassBack), тогда как если бы они нажали кнопку отмены (например, кнопка «Назад»), это будет setResult (Activity.RESULT_CANCELED), и ваш метод DoStuffLikeReloading не будет вызываться, потому что результат не был явно успешным – Guardanis

0

Начните свою деятельность, используя startActivityForResult(). Затем, в onActivityResult() методе вашей деятельности, вызовите вашего DoStuffLikeReloadingData(foo bar);

Смежные вопросы