为了在ActionBar中维护导航信息,我想使用下面的Static类在HashMap中存储这些信息(String + Context):
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监听器,我每次进入其他Activity时都会通过我的静态HashMap映射这个监听器,但它不会工作。如果我不解决,我会另外发帖。
由于
答案 0 :(得分: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>();
答案 1 :(得分:0)
您一直在添加具有相同键的元素。比较密钥,如果在地图中找到相等的密钥,则您添加的元素将替换现有的元素。
此外,您一直在重新创建地图:))