报错
[Vue warn]: Error in v-on handler: "Error: java.lang.IllegalArgumentException: method uts.sdk.modules.mlcMdns.CallbackPair.<init> argument 1 has type kotlin.jvm.functions.Function1, got java.lang.Integer"
found in
Error: java.lang.IllegalArgumentException: method uts.sdk.modules.mlcMdns.CallbackPair.<init> argument 1 has type kotlin.jvm.functions.Function1, got java.lang.Integer
我不知道为啥会报这个错误
kotlin代码
package uts.sdk.modules.mlcMdns
import java.io.IOException
import javax.jmdns.JmDNS
import javax.jmdns.ServiceEvent
import javax.jmdns.ServiceListener
object MdnsDiscovery {
private lateinit var jmdns: JmDNS
fun startMdnsDiscovery(callback: CallbackPair) {
try {
jmdns = JmDNS.create()
callback.success("success")
} catch (e: IOException) {
callback.fail("error")
}
}
fun addServiceListener(listenerWrapper: ServiceListenerWrapper) {
jmdns.addServiceListener(listenerWrapper.serviceType, object : ServiceListener {
override fun serviceAdded(event: ServiceEvent?) {
listenerWrapper.onServiceAdded(event)
}
override fun serviceRemoved(event: ServiceEvent?) {
listenerWrapper.onServiceRemoved(event)
}
override fun serviceResolved(event: ServiceEvent?) {
listenerWrapper.onServiceResolved(event)
}
})
}
fun stopDiscovery(callback: CallbackPair) {
try {
if (::jmdns.isInitialized) {
jmdns.close()
callback.success("success")
} else {
callback.fail("error")
}
} catch (e: IOException) {
callback.success("success")
}
}
}
data class CallbackPair(
val success: (String) -> Unit,
val fail: (String) -> Unit
)
data class ServiceListenerWrapper(
val serviceType: String,
val onServiceAdded: (ServiceEvent?) -> Unit,
val onServiceRemoved: (ServiceEvent?) -> Unit,
val onServiceResolved: (ServiceEvent?) -> Unit
)
uts代码
import ServiceEvent from 'javax.jmdns.ServiceEvent';
export function startDiscovery(options: CallbackPair): void {
MdnsDiscovery.startMdnsDiscovery(options);
}
export function addServiceListener(options: ServiceListenerWrapper) {
MdnsDiscovery.addServiceListener(options);
}
export function stopDiscovery(options: CallbackPair): void {
MdnsDiscovery.stopDiscovery(options);
}
vue代码
startDiscovery({
success: function(response) {
console.log("start success");
addServiceListener({
serviceType: "_http._tcp.local.",
onServiceAdded: function(e) {
console.log("onServiceAdded", e);
},
onServiceRemoved: function(e) {
console.log("onServiceRemoved", e);
},
onServiceResolved: function(e) {
console.log("onServiceResolved", e);
}
});
setTimeout(function() {
stopDiscovery({
success: function(res) {
console.log("stop success");
},
error: function(err) {
console.log("stop error");
}
});
}, 6000);
},
fail: function(error) {
console.log("start error");
}
});
5 个回复
c***@163.com (作者)
app端啥都得用插件,自带的啥功能都没有,完了官方还不出插件,插件市场全是第三方的,而且插件的质量跟垃圾一样,这个破东西我真是服了
c***@163.com (作者)
官方的脑子是咋想的?我TM要疯了,整个破插件就是开发不出来了,也没处问去,草!用这玩意开发app简直就是坑人!!!
DCloud_Android_MHF
麻烦把你遇到的问题贴出来,带上你的最简单代码
另外具体示例地址在这里:https://gitcode.net/dcloud/hello-uts/-/tree/dev/uni_modules/uts-syntaxcase/utssdk/app-android
c***@163.com (作者)
代码贴上了,给看看是咋回事,要疯了
2024-09-18 21:40
c***@163.com (作者)
实际运行的时候包的错,编译打包的时候没事
2024-09-18 21:40
DCloud_Android_MHF
你看下https://gitcode.net/dcloud/hello-uts/-/blob/dev/uni_modules/uts-syntaxcase/utssdk/app-android/kotlinCode.kt 这个示例里面有
有这个方法,看看怎么调用的,另外你把你的CallbackPair 也拆成两个参数传入,别用对象了试试,看你的错误是CallbackPair这个参数传的有问题
c***@163.com (作者)
如果kotlin执行回调函数的时候传入的是kotlin中的一个具体的对象实例的话uts这边应该怎么定义接收呢,我现在只知道string这种类型的参数怎么传,但是一涉及到对象我就不知道了
2024-09-19 18:00
c***@163.com (作者)
callback("设备内存:$totalMem MB,可用内存:$availMem MB") 就像这句代码如果这个callback中传的参数是一个kotlin中的对象实例uts那边怎么定义类型呢
2024-09-19 18:01
c***@163.com (作者)
我这参数的类型老是对不上了,kotlin那边是可为空的一个对象实例,uts这边我就也定义成可为空,但是编译的时候就报预计是Any但推算的是xx可为空的对象实例,我蒙圈了
2024-09-19 18:03
DCloud_Android_DQQ
提供一下可以复现问题的最简完整示例。 我看一下