无法将数据添加到在非活动类中声明的哈希映射

时间:2014-07-20 11:38:02

标签: java android hashmap android-studio

我在非活动类中声明了一个哈希映射,如下所示:

public class Wifi {
    HashMap<String, String> AccessPoints = new HashMap<String, String>();
    AccessPoints.put("AP1", "first_ap");

    public ArrayList<Integer> scanWifi(Context context) {
            // code here
    }
}

然后我尝试将数据添加到哈希映射中,但是我得到了一个&#34;无法解析符号&#34; Android Studio中的错误。

当我将AccessPoints.put("AP1", "first_ap");放在班级的某个功能中时,它似乎可以正常工作。

3 个答案:

答案 0 :(得分:9)

AccessPoints.put("AP1", "first_ap");

调用方法应该在以下块中完成:

  • 一种方法。
  • 静态初始化程序。
  • 实例初始化程序。
  • 一个构造函数。

答案 1 :(得分:1)

你应该在Java中使用一个小的起始字母变量。它可能会认为AccessPoint是一个新类,尽管它只是声明变量的名称。 尝试更改名称中的第一个字母,这可能会有所帮助。

HashMap<String, String> accessPoints = new HashMap<String, String>();
    accessPoints.put("api","first");

如果没有帮助,可能是范围问题,因此请在问题中添加更多上下文。

答案 2 :(得分:0)

这张地图可能是某个班级的成员。您没有指定它的定义位置。 如果你想从另一个类访问它,你应该让它可以被其他类访问(通过公开),并通过引用它来创建它的对象。

例如:

class X {
   ...
   public HashMap<String, String> accessPoints = new HashMap<String, String>();
   ...
}

class Y {

...
   X xObj = new X();
   xObj.accessPoints.put ("fff","yyy");
...
}

当然,以面向对象的方式更好地将地图设为私有,并通过方法从其他类访问它。

class X {
   ...
   private HashMap<String, String> accessPoints = new HashMap<String, String>();
   ...
   public void addAccessPoint (String key, String value) {
       accessPoints.put(key,value);
   }
}

class Y {

...
   X xObj = new X();
   xObj.addAccessPoint ("fff","yyy");
...
}