无法在下一课中获得哈希表(活动)

时间:2014-05-14 06:06:48

标签: java android hashtable

我在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&gt; 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));
         }  

此处 enumer.hasMoreElements()返回 false 值。为什么这个?

1 个答案:

答案 0 :(得分:0)

当您的活动被杀死时,将重新初始化静态HashTable。只需在构造函数中添加日志:

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

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

有关如何在 Android 中存储和检索数据的明确提示,请参阅Data Storage in Android