2013-03-10 50 views
8

我有類A,B和C.類A向B發送意向,B運行C,C返回到B .....但是然後在B類的onCreate內部它希望類A的意圖。但是因爲它來自C類,但它並沒有得到它,但我仍然需要A類的意圖獲取意圖額外和onCreate方法?

有關如何解決此問題的任何想法?我想一個解決方案可能是將extra.getString存儲在數據庫或類似的地方?

Bundle extras = getIntent().getExtras(); 
newString = extras.getString("ID"); 
+1

您的意思是:A-> B-> C-> A(如您所寫)或A-> B-> C-> B(您後面暗示)? – 2013-03-10 20:18:49

+0

哦,我apoligize,我的意思A-> B-> C-> B – user1876202 2013-03-10 21:41:25

+0

是唯一你想要的是從字符串「ID」 – 2013-03-10 22:10:47

回答

2

所以,如果我猜中了:

Activty答:

  • 創建intentAtoB
  • 開始活動B

Activty乙

  • 接收intentAtoB
  • 創建intentBtoC
  • 啓動活動Ç

活動Ç

  • 接收intentBtoC
  • 做了

現在:是否活動C:再次使用面漆(),或

  • 啓動活動B

    1. 迴歸活動B?

    如果1,當您返回到活動B時,它仍然具有您在第一次創建時設置的所有內容。因此,您需要從B的onCreate中的意圖中提取所有內容。如果使用2,則只需將信息沿着用於啓動每個活動的意圖向下傳遞。

    如果您可以(a)確認序列如果和(b)澄清爲什麼上述不會工作,我相信我們可以向前移動。

  • +0

    方法'1。使用finish()返回到Activity B,'更好。只需將活動B中的值存儲在** Class Level Variables **中,即可在Activity B的onCreate()中進行存儲。正如我在上述答案中所建議的那樣。 – user370305 2013-03-11 11:16:06

    +0

    @ user370305我同意這是更好的方法,我只是試圖找出問題作者實際上在做什麼,以幫助他們從他們開始的地方開始。 – 2013-03-11 17:32:41

    5

    由於我不完全知道您的活動流程,所以這是一個解決方案,但可能不是合適的解決方案。

    當你開始新的活動,把一個額外的

    intent.putExtra("ID_FROM_A", value); // except for ActivityA value = mIdFromA 
    startActivity(intent); 
    

    在接收活動

    onCreate() 
    { 
        mIdFromA = getIntent().getStringExtra("ID_FROM_A"); 
    }