NdefMessage的问题 - 类Message中的构造函数消息不能应用于给定的类型

时间:2014-02-11 12:02:38

标签: java android android-studio ndef

我在编写代码时遇到了一些问题......

Android Studio在“((NdefMessage)messages [i];”行显示错误,带有读取下划线。

控制台错误消息显示:“类Message中的构造函数消息不能应用于给定类型;

找到: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
    }

}

1 个答案:

答案 0 :(得分:2)

你可能会导入错误的NdefMessage类。你应该:

import org.ndeftools.Message;

但我想你正在导入“android.nfc.NdefMessage”,这是Android的一部分,而不是NdefTools库。

旧答案:


问题出在这一行:

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

您是否尝试将一个NdefMessage(messages [i])实例化为记录列表?