2013-07-04 59 views
0

修改靜態HashMap中爲了保持導航信息在我的動作條我想用下面的靜態類股票這些信息(字符串+上下文)中的HashMap:通過活動

public class NavigationBarContainer { 
    public static HashMap<String, Context> hashTest; 
} 

但是當我添加引用值到這個常量類通過3個活動我只得到最後一個條目:在每個活動我的HashMap有最後一個入口值,並且HasMap大小總是等於1 ..

這就是我如何訪問它到我的第一個活動:

public class HomeActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_home); 

HashMap<String, Context> ctxHash = new HashMap<String, Context>(); 
     NavigationBarContainer.hashTest = ctxHash; 
     ctxHash.put("key1", getApplicationContext()); 
     NavigationBarContainer.hashTest = ctxHash; 
    } 
} 

如何,我在2和其他活動增加的值:

public class Myctivity extends Activity { 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_one); 

    HashMap<String, Context> ctxHash; 
    ctxHash = NavigationBarContainer.hashTest; 
    ctxHash.put("key2", getApplicationContext()); 
    NavigationBarContainer.hashTest = ctxHash; 
     } 
    } 

我嘗試了一些技巧,以不同的訪問數據,但我始終有同樣的問題..需要幫助嗎?

編輯:

這解決了,但實際上,我在做一些別人更難的技巧。我做一個超級班級活動至極實現ActionTab聽衆和我通過我的靜態HashMap中我每次映射這個監聽器去其他活動,但它不起作用。如果我沒有解決問題,我會發一個帖子。

謝謝

回答

1
NavigationBarContainer.hashTest = ctxHash; 

重新分配的你的靜態每次變量。相反,使用這樣的:

HashMap<String, Context> ctxHash = NavigationBarContainer.hashTest; 
ctxHash.put("key1", getApplicationContext()); 

或者只是:

NavigationBarContainer.hashTest.put("key1", getApplicationContext()); 

並確保在靜態類,你改變它實例化一個哈希映射中使用變量之前:

public static HashMap<String, Context> hashTest = new HashMap<String, Context>(); 
0

您將始終使用相同的鍵添加元素。鍵進行比較,如果在地圖中找到相同的鍵,則要添加的元素將替換現有的元素。

另外,您要重新映射所有的時間:))

+0

感謝信息:) – eento