簡體   English   中英

Android:是否有可能在未來進行一些活動?

[英]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.

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