Android 4.0+ 我有10个微调器,已加载到阵列中 我正在尝试使用ArrayAdapter数组与10个ArrayAdapter相关联。 不工作......
ArrayAdapter<CharSequence>[] adpPPI;
for (int ppiCntr = 0; ppiCntr < 10; ppiCntr++) {
//NOTE 1: next statement gets resource id, works ok
int res_array = getResources().getIdentifier(
"com.my:array/ppi" + Integer.toString(ppiCntr + 1) + "_array", null, null);
// NOTE 2: creating the array adapter provides null pointer error.
// because I need to initialize it somehow? how?
adpPPI[ppiCntr] = ArrayAdapter.createFromResource(
getApplicationContext(), res_array, R.layout.psm_simple_spinner_item);
}
答案 0 :(得分:0)
那是因为你从不初始化adpPPI
。
在数组声明之间......
ArrayAdapter<CharSequence>[] adpPPI;
...并尝试为其索引分配值......
adpPPI[ppiCntr] = ArrayAdapter.createFromResource(...);
......你永远不会创建数组。
简而言之,您可能希望在两者之间添加类似的内容:
adpPPI = new ArrayAdapter[10];
提示:确保在for
循环之上的某处执行此操作。
注意:您无法在Java中创建泛型类型的数组,因此您必须使用原始类型(或者更好的说法:使数组的初始化类型更少)。或者,您可以使用Collection / List代替数组。
答案 1 :(得分:0)
List<ArrayAdapter<CharSequence>> adpPPI = new Vector<ArrayAdapter<CharSequence>>();
for (int ppiCntr = 0; ppiCntr < 10; ppiCntr++) {
//NOTE 1: next statement gets resource id, works ok
int res_array = getResources().getIdentifier(
"com.my:array/ppi" + Integer.toString(ppiCntr + 1) + "_array", null, null);
// NOTE 2: creating the array adapter provides null pointer error.
// because I need to initialize it somehow? how?
adpPPI.add(ArrayAdapter.createFromResource(
getApplicationContext(), res_array, R.layout.psm_simple_spinner_item));
}
尝试上面的代码,你错过了初始化你的数组。