2012-12-24 52 views
7

我已經想「活動一」,我通過兩種方式
一)StartActivity()
B)StartActivityForResult()
現在我有一個活動的方式開始了其具有不同行爲的一些方法開始活動。現在我想要檢測「結果A」是否已啓動。 所以我的問題我們如何可以檢測到活動開始的結果? 我不想通過意圖發送數據。任何其他方式更普遍?檢測活動開始了結果

謝謝。

+1

'通過intent'本身是優化的方式發送數據。 –

回答

-1

發送一些布爾額外使用

intent.putExtra("mBool", true); 
startActivityForResult(intent); 

依靠該數值稱爲其時,相應的動作完成。

if(getIntent().hasExtra("mBool")){ 

//ForResult 
}else{ 

//default 
} 
+1

Imho,不好的解決方案。爲什麼只需檢查'this.getCallingActivity()!= null',爲應用程序增加複雜性? –

+0

據我所知,只有在調用結果時才能獲得調用活動。如果活動未調用結果值,則無法根據調用活動更改行爲。因此,如果您有多個活動調用另一個活動,則無法區分 – Goot

+0

糟糕的anwser,因爲它不使用Android本機解決方案 –

1

您不需要在Intent中傳遞任何假數據。活動已檢查開始Activity它被稱爲getCallingPackage()

從文檔的方法:

返回調用這個活動的包的名稱。這是setResult()中的數據將被髮送到的人。您可以使用此信息 驗證是否允許收件人接收數據。

10

this answer

當你的活動是由startActivity剛剛開始()在目標活動 getCallingActivity()方法將返回null。當 它被startActivityForResult()調用時,它將返回名稱 調用活動。

實施例:

if (getCallingActivity() == null) { 
    //This Activity was called by startActivity 
} else { 
    //This Activity was called by startActivityForResult 
} 
+2

應該是正確的答案;) –

+0

謝謝它完美的工作+1 –

+0

當Intent.FLAG_ACTIVITY_NEW_TASK被設置時它不起作用 – Hector