簡體   English   中英

關於NullPointer訪問的Eclipse警告-Android

[英]Eclipse warning about NullPointer Access - Android

我試圖檢索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];
 }

,說當時只能為null ...我的問題是:如何重寫此代碼,以便此警告消失?

sevenDigits

被定義為null且未修改。 您可能需要打電話

sevenDigits = new byte[data.length];

循環之前

您將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];
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM