【发布时间】:2013-07-15 09:26:35
【问题描述】:
我不知道这里发生了什么。我有一个具有以下大小为 4 的键集的 HashMap:
steps.keySet()
(java.util.HashMap$KeySet)
[INIT_FZLIST, INIT_DATA, INSTALL_DATABASE, PROMPT_GERAETEID]
INIT_FZLIST、INIT_DATA、INSTALL_DATABASE 和 PROMPT_GERAETEID 是枚举的值。
entrySet 也提供 4 个条目。
steps.entrySet()
(java.util.HashMap$EntrySet)
[INIT_FZLIST=de.ansat.terminal.activity.widgets.PendingCheckbox{b50cb4e0 V.E..... ......I. 24,524-456,666},
INIT_DATA=de.ansat.terminal.activity.widgets.PendingCheckbox{b50c8748 V.E..... ......I. 24,350-456,524},
INSTALL_DATABASE=de.ansat.terminal.activity.widgets.PendingCheckbox{b508e288 V.E..... ......I. 24,68-456,209},
PROMPT_GERAETEID=de.ansat.terminal.activity.widgets.PendingCheckbox{b50c59b0 V.E..... ......I. 24,209-456,350}]
但如果我这样做:
steps.get(INSTALL_DATABASE)
null
地图返回 null 并且如果我尝试使用结果对象,我会得到一个 nullpointerexception。
这是在 Android 活动中运行的。 我在 API 级别 17 上使用 Android 4.2.2
[编辑]
private Map<InstallSteps, PendingCheckbox> steps = new HashMap<InstallSteps, PendingCheckbox>();
是我的活动类的一个字段。
我有几个 AsyncTask 在该地图上工作,因为它代表了安装过程的进度。
PendingCheckbox 是一个扩展 LinearLayout 的 View。
[编辑2] 步骤是这样填写 onCreate(..) 的:
PendingCheckbox installDb = new PendingCheckbox(InstallActivity.this);
installDb.setText(INSTALL_DATABASE);
installDb.setChecked(false);
installDb.setLayoutParams(layoutParams);
root.addView(installDb);
steps.put(InstallSteps.INSTALL_DATABASE, installDb);
有谁知道可能导致这种行为的原因?我完全被卡住了。 任何提示将不胜感激!
【问题讨论】:
-
什么是 INSTALL_DATABASE,枚举?细绳?变量?
-
'INSTALL_DATABASE' 是什么类型的?
-
抱歉:私有枚举 InstallSteps { INSTALL_DATABASE,PROMPT_GERAETEID,INIT_DATA,INIT_FZLIST,}
-
当
hashcode()/equals()方法在同一对象上的两次调用之间不一致时,很可能会发生这种行为。您能否发布完整的 Enum 课程内容? -
不,我没有。我应该吗?