2014-10-28 92 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或從Activity返回,可以通過intent.putExtra(String key, Parcellable object)向Intent添加附加內容來實現。

在第二個活動中,您應該在致電finish()傳回數據之前調用方法setResult(int resultCode, Intent data)

+0

太棒了!我有一個問題:結果代碼。我實際上並不知道他們會選擇什麼;這個結果代碼是必要的還是我可以忽略的東西?我不完全理解int結果和請求代碼的作用。 – 2014-10-28 21:25:31

+0

AH沒關係!我想我現在明白了。 非常感謝! – 2014-10-28 21:27:21

+0

很高興能幫到你!至於結果代碼,這是你可以傳回的東西。例如,如果他們點擊了某個東西,你會使用setResult(Activity.RESULT_OK,yourIntentDataToPassBack),而如果他們點擊取消(例如後退按鈕),它會是setResult(Activity.RESULT_CANCELED),並且DoStuffLikeReloading方法不會被調用,因爲結果代碼不是明確的成功 – Guardanis 2014-10-29 14:34:07

0

使用startActivityForResult()開始您的活動。然後,在你活動的onActivityResult()方法,請致電DoStuffLikeReloadingData(foo bar);