有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法在下一个类(活动)中获取哈希表

我在java中使用hashable非常新,所以我在java中的一个类中设置值,并在同一个类中获得值,但无法获得另一个类,为什么?我不知道这个

我的数据实际上是这样的:

  <rule code="53" value="QN_775_0=QN_775_0&gt;50" />
     <rule code="55" value="QN_775_2=QN_775_2&lt;3" />

我想把键53和其他键和值QN_775_0>;50。值放在逻辑运算符后面

在同一类中获取如下数据:

 Logic lg= new Logic();

//like this value
 String logicCode="53";
 String  logicCode="QN_775_0&gt;50";

 lg.add(logicCode, logicCode);
 Enumeration<String> enumer = Logic.logicnew.keys();
 while (enumer.hasMoreElements()) {
 String keyFromTable = (String) enumer.nextElement();     
 System.out.println("1111111CODE="+keyFromTable + "VALUE = " + Logic.logicnew.get(keyFromTable));
     }  

我的模范班:

public class Logic {
    public static Hashtable<String,String> logicnew;

    public Logic(){
        logicnew=new Hashtable<String,String>();
    }

   public void add(String a, String b){
        logicnew.put(a,b);      
    }
     public String get(String key){
        return logicnew.get(key);
    }
     public int getSize(){
         return logicnew.size();
     }
     public Hashtable<String, String> getLogic(){
         return logicnew;
     }
     @Override
    public String toString() {
        StringBuilder sb = new StringBuilder("\n");
        Set set = logicnew.entrySet();
        Iterator it = set.iterator();
        while (it.hasNext()) {
            Map.Entry entry = (Map.Entry) it.next();
            sb.append("\t"+entry.getKey() + " : " + entry.getValue()+"\n");
        }
            return sb.toString();
    }
}

但在下一个活动中,我正在这样做,但无法获得价值

Enumeration<String> enumer = Logic.logicnew.keys();
     while (enumer.hasMoreElements()) {
     String keyFromTable = (String) enumer.nextElement();     
     System.out.println("1111111CODE="+keyFromTable + "VALUE = " + Logic.logicnew.get(keyFromTable));
         }  

这里是枚举器。hasMoreElements()返回false值。为什么会这样


共 (1) 个答案

  1. # 1 楼答案

    当您的活动被终止时,静态哈希表将被重新初始化。只需在构造函数中添加日志:

     public Logic(){
        Log.d("App", "Inside Logic() Constructor  -");
        logicnew=new Hashtable<String,String>();
     }
    

    如果您多次看到该日志,则表明哈希表已重新初始化。因此,您的代码enumer.hasMoreElements()返回false是预期的行为,因为重新初始化后哈希表中没有任何元素

    有关如何在安卓系统中存储和检索数据的详细信息,请参阅Data Storage in Android