如何在android中全局设置值[重复]

Posted

技术标签:

【中文标题】如何在android中全局设置值[重复]【英文标题】:How to set values globally in android [duplicate] 【发布时间】:2017-02-28 13:52:33 【问题描述】:

如何全局设置值,以便我可以从任何活动或片段访问。

例如:activity_login.java > user_id 需要全局存储,因此每次依赖于 user_id 的任何部分,从后端检查和提取数据都将很容易,而不是通过活动(意图)

编辑: 我确实需要来自 fragment 或 activtiy 的 setter 和 getter。

【问题讨论】:

将其保存到共享首选项或将其声明为 public static 你在哪个类中获得。 使用共享偏好来保存用户相关数据。 或者,也许是这个。 ***.com/questions/708012/… 你可以声明你的变量为静态的,当你需要使用define时:yourclassname.younamevalue 【参考方案1】:

有很多方法可以全局存储值,因此可以从应用程序所有类的任何位置访问它:

    声明公共静态变量,但不适合长时间存储。 使用共享首选项 - SharedPreferences 使用数据库 - SQlite

您可以使用上述任何一种替代方法来访问全局值。

【讨论】:

静态变量必须小心使用。当需要空间时,操作系统可以从内存中删除应用程序,然后当 Activity 再次激活时,静态变量通常不会恢复。 @Henry,如果你需要在内存中加载一堆东西,那要么是问题,要么不是 没错,这就是我说“小心使用”的原因。对于长期存储静态变量几乎总是错误的方法。 @Henry,谢谢你现在可以看到我更新的答案。【参考方案2】:

使用 Sharedpreferences.its 安全的,这里是示例 https://www.tutorialspoint.com/android/android_shared_preferences.htm

【讨论】:

【参考方案3】:

使用 sharedPreferences 并访问任何班级的值

将下面的代码放在 SamplePreferences.java

私有静态最终字符串 TOTALCOUNT = "total_count";

public static void setTotalCount(Context thisActivity, String id) 
    Editor editor = thisActivity.getSharedPreferences(KEY, Context.MODE_PRIVATE).edit();
    editor.putString(TOTALCOUNT, id);
    editor.commit();


public static String getTotalCount(Context thisActivity) 
    SharedPreferences user_pref = thisActivity.getSharedPreferences(KEY, Context.MODE_PRIVATE);
    return user_pref.getString(TOTALCOUNT, "0");


您可以使用以下代码设置任何班级的值

SamplePreferences.setTotalCount(thisContext, "2");

使用以下代码访问该值

SamplePreferences.getTotalCount(thisContext);

【讨论】:

以上是关于如何在android中全局设置值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在android中声明全局变量[重复]

如何在android应用程序中声明全局变量? [复制]

如何将选定的对话框值设置为片段中的 TextViews [重复]

如何从服务器获取和设置 android 中的 API(从服务器获取 int 值)?如何绑定和实现这个

全局布尔值在 addListenerForSingleEventValue 函数内设置,但在以下 if 语句中无法识别 [重复]

如何将 Cloud Firestore 中的数据分配给 Android 的全局变量 [重复]