java - 如何从另一个类访问 hashmap 值?

标签 java android collections hashmap

我想从其他类访问在主类中创建的 hashmap 值集。我已经按照它的步骤操作,但我只在子类中获得空值。这是代码

public class SoapTester extends Activity {  
private static final String TAG = "Test";  
public HashMap<String, String> map = new HashMap<String, String>();

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    map.put("year", "Apple");
    map.put("make", "Mango");
    map.put("model", "Grape");
    map.put("style", "Orange");
    map.put("series", "Peach");
}

public HashMap<String, String> getHashmap() {
    Log.v(TAG, "map2: E" + map);
    return map;
}

public void setHashmap(HashMap<String, String> map) {
    this.map = map;
    getHashmap();
    Log.v(TAG, "map1: E" + map);
}
}

//子类

public class Tradein extends Activity {
private static final String TAG = "Test";

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tradein);
    SoapTester ex = new SoapTester();
    HashMap<String, String> hm = ex.getHashmap();
    Log.v(TAG, "hm: " + hm);//Getting Null Value here
}
}

我错过了什么吗?

最佳答案

使 HashMap 静态化

public static HashMap<String, String> map = new HashMap<String, String>(); 

通过这种方式,我们可以随意更改任何 Activity 中的值,而不管各种 Activity 之间的确切控制流如何。

请注意,只有在您不关心应用程序中同一 Activity (类)的多个副本的实例化时才能使用此技巧,这是最容易实现的

第 2 步:Android; Implementing global state; share data between Activities and across your application

关于java - 如何从另一个类访问 hashmap 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8724553/

相关文章:

java - 我无法让我的对话框复选框在 android studio 中工作

java - 读取文件并合并它们 JavaFX

android - 从android marketplace查询一个应用的价格

java - JNI - Java 应用程序的 C++ 变量值

java - 正确替换所有隔离字符串

未为超链接加载的 Android webview 内容包含哈希

java - 使用 'Collections.frequency' 获取给定一个值的实例计数

c++ - C++ 标准库中 `at()` 索引函数的真实用例?

Java 集合排序 : DEBUG/VERBOSE the RootCause of "Comparison method violates its general contract:" errors

java - 用java向服务器发出多个请求而不被禁止?