gpt4 book ai didi

android - 如何在 POJO 的层次结构中向下传递上下文?

转载 作者:行者123 更新时间:2023-11-30 05:09:29 25 4
gpt4 key购买 nike

我已将我的应用程序的功能抽象为许多不同的 POJO。现在一些 POJO 需要访问 ContextSharedPreferences 或其他什么。他们如何获得该访问权限?

更具体地说,考虑这个例子:

Activity {
B b;
}

B {
C c;
}

C {
method() {
SharedPreferences.readSomeValue();
}
}

我的 Activity 使用一个 POJO B,它又使用一个 POJO C,它需要从 SharedPreferences 中读取一个值。我如何让 C 访问 SharedPreferences

显而易见的解决方案是将它从 Activity 通过 B 传递到 C。然而,为了传递它的单一目的,这将需要使用 SharedPreferences 来混淆类 B一直到 C。B 本身不需要访问 SharedPreferences。我发现这种方法非常丑陋。

我尝试过的另一个解决方案是在某处设置一个public static 变量来存储SharedPreferences 并从任何地方访问它们。此解决方案不仅同样难看,而且如果从不同的 Activity 在不同的层次结构中访问 C,它可能会导致 NullPointerException

还有别的办法吗?

最佳答案

处理 POJO 类的单例类怎么样?
在这种情况下,您可以改变 Map 中而不是 Activity 中的同一对象。

public class AppVariables{
private static AppVariables instance = new AppVariables();
private Map<String,Object> map;
public static AppVariables getInstance(){
return instance;
}
private AppVariables(){
map = new HashMap<>();
}
public void add(String key, Object value){
map.put(key,value);
}
public Object get(String key){
return map.get(key);
}

//In your A class
AppVariables.getInstance().add("AVariable",A);

//In your C class
Object obj = AppVariables.getInstance().get("AVariable");
//Now you can receive your variable in Activity C or any other java class
}

关于android - 如何在 POJO 的层次结构中向下传递上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53961783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com