2014-02-11 36 views
0

我有一些麻煩我的代碼正確編譯...麻煩與NdefMessage - 類信息構造消息不能被應用到給定類型

Android的工作室給我一個錯誤在該行「((NdefMessage)消息[I];「具有讀下劃線

控制檯-錯誤消息指出:」類消息構造消息不能被應用到給定的類型;

實測值:NdefMessage

原因:實際和正式參數名單長度不同。

當我將鼠標懸停在錯誤上 - 它表示:Message中的Message()不能應用於(android.nfc.NdefMessage)。

...

我希望這裏有人能解釋爲什麼我得到這個錯誤,也許什麼其實是錯誤的。

如果有人能指出我至少有正確的方向,那將會很酷,因爲我對Android Studio/Java仍然很陌生,至今仍在學習! :)

該代碼不是我寫的。它來自我在某處在線抓取的NFC示例代碼。

@Override 
public void onNewIntent(Intent intent) { 


    Tag tag = intent.getParcelableExtra(nfcAdapter.EXTRA_TAG); 


    if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) { 
     TextView textView = (TextView) findViewById(R.id.title); 


     textView.setText("Tag Found!"); 


     Parcelable[] messages = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); 
     if (messages != null) { 

      vibrate(); // signal found messages :-) 

      // parse to records 
      for (int i = 0; i < messages.length; i++) { 
       try { 
        List <Record> records = new Message((NdefMessage) messages[i]); 


        for (int k = 0; k < records.size(); k++) { 


         Record record = records.get(k); 

         if (record instanceof AndroidApplicationRecord) { 
          AndroidApplicationRecord aar = (AndroidApplicationRecord) record; 

         } 

        } 
       } catch (Exception e) { 

       } 

      } 
     } 
    } else { 


     // ignore 
    } 

} 

回答

2

你很可能導入了錯誤的NdefMessage類。你應該:

import org.ndeftools.Message; 

但我猜你要導入「android.nfc.NdefMessage」,這就是Android的一部分,而不是NdefTools庫。

老答案:


的問題是在這條線:

List <Record> records = new Message((NdefMessage) messages[i]); 

你試圖實例化一個NdefMessage(消息[1])作爲記錄的列表?

+0

呃..我真的不知道。我在terminollogy中並不擅長,也不是編碼專家。代碼來自本教程:http://code.google.com/p/ndef-tools-for-android/wiki/AndroidTutorial – CustomCase

+1

I '對不起。現在我又讀到了源代碼,我發現問題不是我說的那樣。該文檔指出「所以一條消息由NDEF標準中的記錄列表組成」,所以我的快速結論是錯誤的。看到我編輯的答案,它應該解決問題。 – PieterAelse

+0

我猜文檔可能更清晰? – ThomasRS

相關問題