我有一個場景,我有我的主屏幕(ActivityA)開始登錄屏幕(ActivityB)。此登錄屏幕將有一個按鈕,允許非註冊用戶註冊一個帳戶,觸發(ActivityC)。Android startActivityForResult和子活動啓動另一個活動
在我的代碼,我有ActivityA
public class ActivityA extends Activity {
...
startActivityForResult(new Intent(this, ActivityB.class), 0);
...
}
和ActivityB
public class ActivityB extends Activity {
...
startActivity(new Intent(this, ActivityC.class));
...
}
那麼它似乎工作,但我擔心,如果有任何隱藏的問題都不可能返回後來困擾我?在ActivityB中,如果我啓動ActivityC,則沒有setResult()調用來觸發ActivityA的onActivityResult()。這樣的流程是否有問題,或者我應該使用startActivity而不是startActivityForResult?
感謝你的回覆,關於你回覆的一些問題1)如果ActivityB沒有甚至打電話完成()? 2)如果ActivityC進入startActivty()並啓動ActivityA,會有什麼問題嗎? – yjw 2011-06-06 19:33:27
ActivityB在返回到ActivityA之前始終會調用finish(),它在生命週期中。如果ActivityC啓動ActivityA,則取決於您如何啓動它。它應該創建一個新的實例,以便您的堆棧看起來像「A B C A」,在這種情況下,從B到A的結果通道仍然可以正常工作。有可能啓動帶有標誌的A將它帶到棧頂,導致「B C A」,這種情況下B的結果可能未被使用。 – LeffelMania 2011-06-06 19:44:18