我在使我的代码正确编译方面遇到一些麻烦...
Android Studio在读取底线的“(((NdefMessage)messages [i];]]”行给我一个错误。
控制台错误消息说:“类Message中的构造函数消息不能应用于给定类型;
找到:NdefMessage
原因:实际参数和正式参数列表的长度不同。
当我将鼠标悬停在错误上时-它说:消息中的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
}
}
最佳答案
您可能导入了错误的NdefMessage类。你应该:
import org.ndeftools.Message;
但是我想您正在导入的“ android.nfc.NdefMessage”是Android的一部分,而不是NdefTools库。
旧答案:
问题在这一行:
List <Record> records = new Message((NdefMessage) messages[i]);
您试图将一个NdefMessage(messages [i])实例化为记录列表吗?