有关NullPointer Access的Eclipse警告 - Android

时间:2012-09-20 07:54:52

标签: java android nullpointerexception

我正在尝试检索Mifare Classic 1k卡的UID,为此我使用此代码:

    private String getUID(){
    MifareClassic mfc = MifareClassic.get((Tag) intent.getParcelableExtra(NfcAdapter.EXTRA_TAG));
    byte[] data;
    byte[] sevenDigits = null;
    String uid;

    try{
        mfc.connect();
        boolean auth = false;
        auth = mfc.authenticateSectorWithKeyA(0, MifareClassic.KEY_DEFAULT);

        if(auth){
            data = mfc.readBlock(mfc.sectorToBlock(0));


            for (int i =0; i < 8; i++){
                sevenDigits[i] = data[i];
            }

            return getHexString(sevenDigits);
        } else {
            return "Authenticatie mislukt";
        }

    } catch (IOException e) {
        return null;
    }
}

Eclipse不断向我发出关于此行的警告

 for (int i = 0; i < 8; i++) {
    sevenDigits[i] = data[i];
 }

,说它在那时只能为空......我的问题是:我如何重写这段代码,以免这个警告消失?

2 个答案:

答案 0 :(得分:0)

sevenDigits

定义为null且未修改。你可能需要打电话

sevenDigits = new byte[data.length];
循环之前

答案 1 :(得分:0)

您将sevenDigits []声明为null,您必须在使用它之前按其大小初始化它

sevenDigits[] = new byte[size];

不要在迭代器中使用静态值来获取长度,而是使用你想要在for循环中使用的数组的长度

data = mfc.readBlock(mfc.sectorToBlock(0));

sevenDigits[] = new byte[data.length];

        for (int i =0; i < data.length; i++){
            sevenDigits[i] = data[i];
        }