我有两种方法:
第一个迭代HashMap<String, String>
(“mWidgetStartConfig”)以设置片段中微调器小部件的值。始终在onResume
中调用此方法。
第二种方法实现onItemSelected
的{{1}}回调方法,并根据选择的微调项目更新另一个OnItemSelectedListener
(“mWidgetCurrentConfig”)中的值。
以下是方法:
HashMap<String, String>
奇怪的是,只要我在第二种方法中没有做任何事情(即注释掉身体),第一种方法就可以正常工作。一旦我在第二种方法中执行某些操作,当第一种方法被称为第二时,我会得到一个protected void configureWidgets() {
for(String tag : mWidgetStartConfig.keySet()) {
int valueIndex = mSpinnerValues.indexOf(mWidgetStartConfig.get(tag));
((Spinner) mLayout.findViewWithTag(tag)).setSelection(valueIndex);
}
}
public void onItemSelected(AdapterView<?> parent, View v, int pos, long id) {
String tag = (String) v.getTag();
String value = (String) parent.getItemAtPosition(pos);
mWidgetCurrentConfig.put(tag, value);
}
,其中NullPointerException
“tag”为null (第一个电话以某种方式工作正常)。
我真的不明白为什么会发生这种情况,因为我在第二种方法中根本没有访问或更改“mWidgetStartConfig”变量。我也尝试了不同的方法来迭代String
- 相同的结果。
非常感谢任何帮助!