簡體   English   中英

關於通過意圖傳遞數據

[英]regarding passing data through intent

我有一個包含3 Activities的應用程序。 如果應用程序是首次運行,則流程如下所示

 Activity 1 ---> Activity 2 ---> Acitvity3

如果不是第一次運行,則跳過Activity2

 Activity 1 --->  Acitvity3

活動3需要活動2的一些數據。

    Bundle b = getIntent().getExtras();
    Integer mInt= b.getInt(filename);

Acitvity 1不會發送此數據,如果從Acitvity1啟動了Activity 3(即,不是首次運行),將迫使應用程序崩潰。 如果Activity1調用了getExtras ,有什么方法可以跳過它?

每當從Activity1Activity2啟動Activity3 ,都傳遞一個字符串變量,如下所示。

如果來自ActivityA

 intent.putExtra("from", "ActivityA");

如果來自ActivityB

intent.putExtra("from", "ActivityB");

並在Activity3中獲取該值,並檢查是否從Activity2獲取它的值。

String stringExtra = getIntent().getStringExtra("from");
    if (stringExtra.equals("ActivityA")) {

    }else {

    }

Android中無法獲取稱為您當前活動的活動。 考慮一下,調用“活動”可能是主頁。

相反,您可以嘗試在Extras中傳遞另一個變量,說明哪個活動正在調用新活動(一個簡單的字符串,甚至是一個Class對象),然后根據被調用的活動,您可以決定如何處理一個簡單的“如果”語句。

希望這可以幫助 :)

添加額外的布爾值作為標志,以確定哪個活動啟動了Activity3。 在嘗試從其他函數中獲取mInt之前,請先閱讀布爾值,您可以在活動1的Intent啟動活動3中將其設置為false,在Activity2的Intent中將其設置為true。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM