【发布时间】:2016-04-29 07:51:50
【问题描述】:
此代码适用于 Java。但迁移到 Kotlin 后,编译器将方法 native fun stringFromNative(): String 显示为错误,并显示以下文本:
没有主体的函数必须是抽象的
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Toast.makeText(this, stringFromNative(), Toast.LENGTH_LONG).show()
}
companion object {
init {
System.loadLibrary("_ndkkt")
}
native fun stringFromNative(): String
}
}
感谢@KenVanHoeylandt!
答案是:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Toast.makeText(this, stringFromNative(), Toast.LENGTH_LONG).show()
}
init {
System.loadLibrary("_ndkkt")
}
external fun getStringFromNative(): String
}
}
如果你想在另一个类中使用这个原生函数,你可以指定包含它的类,如下所示:
val aStringFromNative : String = MainActivity().getStringFromNative()
【问题讨论】:
-
你试过用
external替换native吗? -
将
native fun stringFromNative(): String放在伴随对象之外并放入MainActivity有什么不同吗? -
@KenVanHoeylandt 已解决!谢谢!
标签: android android-ndk kotlin