如何在所有片段之间保持变量存活

时间:2018-12-18 17:30:26

标签: java android android-studio android-fragments

我的问题是,我有一个片段,其中有一个菜单,然后选择一个选项,该选项需要应用于我拥有的每个片段。

例如,在我的个人资料片段中,我需要为用户启用一个特定的团队,该团队将影响每个片段,因为如果我在个人资料片段中选择了例如美国作为团队,则需要查看信息关于我的团队的其他片段。

我的问题是,单身这样做更好吗?因此,我在个人资料中创建了所选内容的实例,然后在其他片段中访问了它。

这是一种好方法还是我需要以其他方式做到这一点?

4 个答案:

答案 0 :(得分:1)

使用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时,它将在共享首选项中放置一个条目,该条目在整个应用程序中都可用。

答案 1 :(得分:0)

通常,您希望保留诸如团队,姓名,年龄等用户信息。

如何持久保存数据,以后可以在任何其他业务逻辑或视图中提取并重用这些数据,这无关紧要。 (可以是例如远程或本地数据库)

我不建议将其存储到任何依赖于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

答案 2 :(得分:0)

您需要创建一个类并用于存储静态变量。

例如

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

现在您可以使用 S 在活动和片段中的任何地方获取此变量。 例如

int SocketTimeOut = S.sSocketTimeOutInMS;

答案 3 :(得分:0)

对于当今的应用程序,我所知道的最好方法是使用Google Architecture Components中的ViewModel。您可以共享所有片段的ViewModel,并像以前有人告诉您的那样使用LiveData观察每个片段的变化。