Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android(Kotlin)中添加登录扩展_Android_Kotlin_Kotlin Extension - Fatal编程技术网

在android(Kotlin)中添加登录扩展

在android(Kotlin)中添加登录扩展,android,kotlin,kotlin-extension,Android,Kotlin,Kotlin Extension,我使用此代码为Log类android添加扩展 fun Log.i2(msg:String):Unit{ Log.i("Test",msg) } 在活动中使用时 class MainActivity: AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(

我使用此代码为
Log
类android添加扩展

fun Log.i2(msg:String):Unit{
    Log.i("Test",msg)
}
在活动中使用时

class MainActivity: AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        Log.i2("activity_main")
    }
}

找不到Log.i2。怎么了?

要在静态类中实现扩展功能,需要编写伴生对象的扩展(请参阅)


您已经创建了类
Log
的扩展函数。
假设它通过类
Log
的实例调用。您试图将扩展函数视为静态函数,并按类名调用它。在这种情况下这是不正确的目前,Kotlin中的静态扩展方法在没有
伴生对象的情况下是不受支持的,因为
android.util.Log
是一个java类,所以没有
伴生对象

相反,我建议您使用静态函数(包级函数,仅在源代码文件中的类外部声明):

就像这样使用它:

logI2("activity_main")

您的扩展类扩展名是什么(类型:like.kt)?类型文件Log.ktI需要在android中的android.util.Log类上添加函数。不是新的自定义类android.util.Log类是静态的,为了在Kotlin中实现静态类的扩展功能,我们需要使用它们的伴生对象引用。如果在日志中不可能,那么我建议根据此扩展创建
Any
扩展函数。如果您不使用receiver对象,那么Any
是多余的,此时您可以创建静态
logI2
函数。@Pawel为什么要使用顶级函数?为什么不用呢?因为这两个有着相同的行为。
fun logI2(msg: String) {
    Log.i("Test", msg)
}
logI2("activity_main")