簡體   English   中英

如何使所有片段之間的變量保持活動狀態

[英]How to keep a variable alive between all fragments

我的問題是,我有一個片段,其中有一個菜單並選擇一個需要應用於我擁有的每個片段的選項。

例如,在我的個人資料片段中,我需要為用戶啟用某個團隊,該團隊將影響每個片段,因為如果我在我的個人資料片段中選擇美國作為團隊,我將需要查看有關該團隊的信息在我的其他片段中。

我的問題是,用單身人士做這件事更好嗎? 所以我在我的個人資料中創建了一個選擇實例,然后在其他片段中訪問它。

這是一個好方法還是我需要以另一種方式做到這一點?

這可以使用shared preferences更好地處理。 當您選擇United States時,只需將其保存在共享首選項中的一個變量中,該首選項將在整個應用程序中可用。

 Button updateTeamName = findViewById(R.id.btnupdateTeamName);
 updateTeamName.setOnClickListener(new View.OnClickListener() {
 @Override
    public void onClick(View v) {
        SharedPreferences.Editor editor = sharedpreferences.edit();
        editor.putString("team", "United States");
        editor.commit();
    }
 });

單擊按鈕updateTeamName時,它將在共享首選項中放置一個條目,該條目將在整個應用程序中可用。

通常,您希望保留諸如團隊、姓名、年齡等用戶信息。

您如何保留數據(稍后可以在任何其他業務邏輯或視圖中獲取和重用)並不重要。 (可以是遠程或本地數據庫)

我不建議將它存儲到任何類型的依賴於 Android 技術的生命周期,因為當應用程序終止時您可能會丟失數據。

嘗試通過某種持久層存儲數據。 恕我直言,您訪問該持久層的方式可以通過處理對該層的訪問的單例對象來實現。

我會為您添加各種資源,以找出最適合您需求的資源:

https://developer.android.com/guide/topics/data/data-storage
https://developer.android.com/topic/libraries/architecture/room
https://github.com/futurice/android-best-practices#data-storage
https://github.com/codepath/android_guides/wiki#persistence

還要檢查 android 體系結構,您可以在其中了解它們如何處理不同片段和視圖上的數據:

https://github.com/googlesamples/android-architecture

您需要創建一個類並存儲靜態變量。

例如

public class S{
 public static int sSocketTimeOutInMS = 50000;
}

現在您可以使用S在活動和片段中的任何地方獲取此變量。例如

int SocketTimeOut = S.sSocketTimeOutInMS;

我所知道的當今應用程序的最佳方法是使用來自 Google Architecture Components 的 ViewModel。 您可以為所有片段共享一個 ViewModel,並像之前有人告訴您的那樣使用 LiveData 觀察每個片段的變化。

暫無
暫無

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

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