[英]Android: Is it possible to pass intent several activities ahead?
例如:我有5個活動:
活動A->活動B->活動C->活動D->活動E
活動A 必須按順序進行活動B,然后是C,然后是D,然后是E。
我想將活動A的意圖傳遞給活動E, 而不通過B,C,D。
有可能這樣做嗎?
我目前在活動A中傳遞的意圖:
fab = (FloatingActionButton) rootView.findViewById(R.id.fabAddConList);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent createContactList = new Intent(context, ActivityB.class);
createContactList.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
createContactList.putExtra("userid", userID);
startActivity(createContactList);
}
});
我目前在活動E中的接收意圖:
Intent lastIntent = getIntent();
userid = lastIntent.getStringExtra("userid");
- - - - - - - - - - - - - - - - - -編輯 - - - - - - - ---------------------------
根據本文中的代碼,我將活動A的意圖傳遞給活動B而不是活動E,因為單擊按鈕時我想轉到活動B。 但是,如何在不將“用戶ID”傳遞給活動B並將其保留到活動E的情況下進入活動B?
不,這是不可能有一個Activity
傳遞一個Intent
到下一個Activity
的序列中而無需首先接收到Intent
。 還有什么要繼續下去的?
在您的情況下,請考慮將Activity
E的信息寫入SharedPreferences
。 他們像意圖一樣使用鍵值對來存儲數據,另請參見此文檔鏈接 。
順便說一句,從安全角度來看:至少在某些android版本中,與startActivity()
一起使用的Intent
不是您的應用專用的。 因此請注意不要使用startActivity()
傳遞敏感數據。
是的,只要意圖不明確,一切都會從頭到尾通過。 每當您要清除意圖數據時,您都可以致電
getIntent().removeExtra("key");
如果您要轉發意圖。 你可以做到
Intent newIntent = new Intent(receivedIntent);
不,您必須傳遞所有活動的價值。
除此之外,您可以使用SharedPreferences
將值存儲在Activity A
並在Activity E
獲取該值。 檢查此以供參考。
另一種方法是靜態變量,在A中獲取public static
變量,然后從Activity E
訪問它
在活動A中
public static String yourVariable="value";
在活動E中,使用A.yourVariable
訪問它
對於我的應用程序,用戶將必須按順序執行活動A到E。 用戶不能在沒有通過B,C和D的情況下直接從活動A轉到活動E。當流程仍按A,B,C,D,E順序進行時,我是否仍可以將意圖從A傳遞到E?
您的所有活動都按順序進行,那么您必須使用意圖傳遞所有活動的價值。
替代
使用Preference
存儲您的值或static variable
一種選擇是使用公共靜態變量(或單例)來存儲一個值,以供以后另一個活動讀取。 通常,您不想使用這樣的靜態函數,但這對您來說可能是最簡單的事情。
這是Java中靜態變量的基本應用。 用您要保留的狀態聲明一個新類:
public class State {
public static String value;
}
在活動A中:
State.value = "value that you want to read in activity E"
在活動E中:
String v = State.value;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.