Android数组初始化出错

一个输入法程序,想要添加一些自定义按键,但是初始化数组的时候一直出问题。

 public class FullKeyboard extends Keyboard {
...
//数组初始化:
private Key[] mCustomKey = new Key[10]; 
...
protected Key createKeyFromXml(Resources res, Row parent, int x, int y,
                               XmlResourceParser parser) {
...
    }else if(key.codes[0]<= KEYCODE_CUSTOM0 && key.codes[0]>= KEYCODE_CUSTOM9){
//在这里赋值,报错Attempt to write to null array。
        mCustomKey[KEYCODE_CUSTOM0- key.codes[0]]= key;
    }
}

然后改为:

 public class FullKeyboard extends Keyboard {
...
private Key[] mCustomKey; 
...
protected Key createKeyFromXml(Resources res, Row parent, int x, int y,
                               XmlResourceParser parser) {
//数组初始化:
    mCustomKey = new Key[10]; 
...
    }else if(key.codes[0]<= KEYCODE_CUSTOM0 && key.codes[0]>= KEYCODE_CUSTOM9){
        mCustomKey[KEYCODE_CUSTOM0- key.codes[0]]= key;
    }
}

不报错,logcat也没问题,但是后面别的方法里使用mCustomKey时,里面除了mCustomKey[9]其他全是null

第一个报错建议你在createKeyFromXml中debug下,这里看不出什么.
第二个全为null是正常情况,new key[10]等价于new key[]{null,.....null}.

}else if(key.codes[0]<= KEYCODE_CUSTOM0 && key.codes[0]>= KEYCODE_CUSTOM9){
    mCustomKey[KEYCODE_CUSTOM0- key.codes[0]]= key;
}
    在这里是给mCustomKey赋值了的,从0到9每一个都赋值了。 

    debug的话,这个app只有ime的service,没有active。
    只能附加debug,观察不到createKeyFromXml,附加的时候已经过去了。不知道service有什么好的debug方法么