2012-09-03 32 views

回答

7

當你啓動了結果的活動與requestCode >= 0,該代碼將返回到第一個活動的onActivityResult()第二,當活動finished.You可結果啓動多個ActivityActivity。在每種情況下,您都可以調用startActivityForResult()傳遞requestCode的方法。在onActivityResult()中,我們可以使用requestCode來找出我們收到回調的活動。所以爲了區分來自Activities的回調,我們使用不同的requestCodes。

對於如:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Intent i = new Intent(FirstActivity.this, SecondActivity.class); 
    startActivityForResult(i, 1); 
    Intent i = new Intent(FirstActivity.this, ThirdActivity.class); 
    startActivityForResult(i, 2); 
} 

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

if (requestCode == 1) { 

    if (resultCode == RESULT_OK) { 
    //Get the result from SecondActivity 
    } 

    } 
else if (requestCode == 2) { 
    if (resultCode == RESULT_OK) { 
    //Get the result from ThirdActivity 
    } 
} 
} 
2

您可以在requestCode中隨意放置任何東西,它可以讓您瞭解在指定的requestCode開始Activity後您期待回來的具體信息。 被調用的Activity應在調用setResult(RESULT_OK)時將其信息傳遞給前面的Activity以驗證這是正確的數據,並且一切正常。

1

requestCode是由你自己決定的。它會幫助您識別哪個Activity已完成,在您的onActivityResult()方法中。此外,結果參數或多或少取決於您,只要您只使用自己的活動。您可以將其視爲調用活動的返回值。

2

requestCode in startActivityForResult()用於分配一個id給請求,所以請求可以用這個代碼來標識,在onActivityResult()。就像如果有人在onActivityResult()已經寫代碼通過下面的代碼來啓動一個活動B和C,兩種活動

startActivityForResult(new Intent(A.this, B.class), 1); 
startActivityForResult(new Intent(A.this, C.class), 2); 

現在你可以承認這Activity返回結果。

setResult()方法用於設置結果中的IntentresultCode。通過resultCode我們告訴onActivityResult()結果是好的,或取消。我們在Result中設置了Intent,可以用來傳遞一些數據,通過intent.putExtra()方法。

相關問題