标签: kotlin-extension

Android Studio和Kotlin:未解决的参考:也

可以从Android Studio编译和运行:

val greeted = "World".also { println("Hello $it") }
Run Code Online (Sandbox Code Playgroud)

然而,编辑突出显示alsoit作为错误,并没有给intellisense提供任何帮助.申请仍然有效,当我去源I可以看到两者的定义applyalso.如何让Android Studio识别also

  • Android Studio 2.3.3
  • kotlin_version ='1.1.3-2'
  • Kotlin插件1.1.3-release-Studio2.3-2

我在早期版本中也遇到过这个问题.

android kotlin android-studio kotlin-extension

10
推荐指数
2
解决办法
6387
查看次数

在android java类中使用Kotlin扩展

是否可以在android java类中使用kotlin扩展?例:

fun String.getSomething(): String {
    return "something"
}
Run Code Online (Sandbox Code Playgroud)

然后在Java中使用它:

String someString = "blabla";
someString.getSomething();
Run Code Online (Sandbox Code Playgroud)

这可能吗?

android kotlin kotlin-extension

9
推荐指数
2
解决办法
2535
查看次数

在扩展功能中修改"this"

我想编写修改"this"的扩展函数,例如:

var a = false
a.toggle() // now a contains false
Run Code Online (Sandbox Code Playgroud)

要么

var a = 1
a.increment() // now a contains 2
Run Code Online (Sandbox Code Playgroud)

在Kotlin有可能吗?

我可以创建返回修改值的扩展函数,但保留"this"未修改,但我想要更方便!看起来Swift可以做到这一点.

kotlin kotlin-extension

9
推荐指数
1
解决办法
1433
查看次数

如何在Kotlin中创建一个用于打开新活动的按钮(Android Studio)?

您好我正在使用Android Studio和Kotlin语言创建应用程序,但是无法按下按钮来打开新活动.我在我的xml文件创建的按钮,但我不能找到如何声明它MainActivity.kt以及如何创建一个会带我到新的活动OnClicklistener的科特林语法.我在清单中定义了新活动,我想我只需要有关如何实际从MainActivity.kt切换到secondActivity.kt的语法帮助.任何帮助表示赞赏.

android kotlin android-studio kotlin-extension kotlin-android-extensions

9
推荐指数
2
解决办法
3万
查看次数

Kotlin Android:属性委托必须有一个“getValue(DashViewModel, KProperty*>)”方法

我正在尝试遵循 Kotlin 中 ViewModels 的官方 Android 指南。我从字面上复制粘贴了最简单的官方示例,但语法似乎是非法的。

此部分导致问题:

private val users: MutableLiveData<List<User>> by lazy {
    MutableLiveData().also {
        loadUsers()
    }
}
Run Code Online (Sandbox Code Playgroud)

预览给了我这个错误:

Property delegate must have a 'getValue(DashViewModel, KProperty*>)' method. None of the following functions is suitable.
Run Code Online (Sandbox Code Playgroud)

如果我想启动应用程序,我会收到此错误:

Type inference failed: Not enough information to infer parameter T in constructor MutableLiveData<T : Any!>()
Please specify it explicitly.
Run Code Online (Sandbox Code Playgroud)

我不明白这两个错误和其他具有相同错误的问题似乎是由不同的原因引起的。我的猜测是MutableLiveData().also导致问题的原因,但我不知道为什么。考虑到这是一个官方示例,这很奇怪。

android kotlin kotlin-extension android-livedata

9
推荐指数
1
解决办法
5095
查看次数

这个引用在kotlin扩展属性的惰性初始化器中

我正在尝试Kotlin并希望为Activity实现一个延迟扩展属性:

/**
 * Activity module
 */
val Activity.activityModule: ActivityModule by lazy {
    ActivityModule(this)
}
Run Code Online (Sandbox Code Playgroud)

编译器错误:

'this' is not defined in this context
Run Code Online (Sandbox Code Playgroud)

我怎样才能将此作为活动资格?我已经阅读了指南,但无法得到它.this@Activity说这个参考没有得到解决.

kotlin kotlin-extension

8
推荐指数
2
解决办法
1543
查看次数

我们应该避免在Kotlin中命名与现有类相同的函数吗?为什么?

Kotlin允许命名一个与现有类相同的函数,例如HashSet初始化函数可以像这样实现:

fun <T> HashSet(n : Int, fn: (Int) -> T) = HashSet<T>(n).apply {
    repeat(n) {
        add(fn(it))
    }
}
Run Code Online (Sandbox Code Playgroud)

使用时,它看起来像一个普通的HashSet构造函数:

var real = HashSet<String>()
var fake = HashSet(5) { "Element $it" }
Run Code Online (Sandbox Code Playgroud)

这应该避免或鼓励,为什么?

kotlin kotlin-extension

8
推荐指数
1
解决办法
707
查看次数

Kotlin类NoClassDefFoundError崩溃

我有一个使用以下库的现有Android项目:

  1. AutoValue
  2. Dagger2
  3. RxJava
  4. Retrolambda

我正在尝试添加Kotlin支持,以便我可以将项目慢慢迁移到Kotlin.这就是我所做的.

  1. 添加了Kotlin依赖.
  2. 将其中一个类转换为Kt类并移至 src/main/kotlin/..package..

  3. 在源集中添加了kotlin.sourceSets {main.java.srcDirs + ='src/main/kotlin'}

  4. 当我进行干净的构建并部署应用程序时,我得到NoClassDefFoundError异常.但是,如果我再次部署它可以正常工作.有什么建议?我在转换的类中没有任何注释,所以我没有应用kapt插件.

注意:我使用的是最新的kotlin 1.0.4.我也禁用了即时运行.

android kotlin kotlin-extension

8
推荐指数
1
解决办法
619
查看次数

kotlin扩展方法访问另一个kt

我正在考虑在一个文件中为String 添加一个全局扩展方法,无论我在哪里使用String,我都可以使用这个扩展.

但我没有找到办法这样做...我现在只是粘贴扩展名.

在A.kt扩展:

class A{
    ......
    fun String.add1(): String {
        return this + "1"
    }
    ......
}
Run Code Online (Sandbox Code Playgroud)

在B.kt中这样访问:

class B{
    fun main(){
        ......
        var a = ""
        a.add1()
        ......
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经试过everyting我可以添加像staticfinal,但毫无效果.

kotlin kotlin-extension

8
推荐指数
2
解决办法
2134
查看次数

使用@Parcelize 尝试在 writeToParcel(Client.kt:0) 处的空对象引用上调用接口方法“int java.util.Collection.size()”

我的 Parcelable Model 类的代码如下,

@Parcelize
data class Client(
    @SerializedName("id")
    var id: Int = 0,

    @SerializedName("accountNo")
    var accountNo: String? = null,

    @SerializedName("status")
    private val status: Status,

    @SerializedName("active")
    private val active: Boolean?,

    @SerializedName("activationDate")
    var activationDate: List<Int> = ArrayList(),

    @SerializedName("dateOfBirth")
    var dobDate: List<Int> = ArrayList(),

    @SerializedName("clientClassification")
    var clientClassification: @RawValue ClientClassification? = null,

    @SerializedName("clientType")
    var clientType: @RawValue ClientType? = null,

    @SerializedName("gender")
    var gender: @RawValue Gender? = null,

    @SerializedName("groups")
    var groups: @RawValue List<Group> = ArrayList()

) : Parcelable
Run Code Online (Sandbox Code Playgroud)

在将此类转换为 Kotlin 之前,Java 代码运行良好。为什么要给空指针,因为我正在初始化数据类的构造函数中的所有 List ?

android parcelable kotlin kotlin-extension kotlin-android-extensions

8
推荐指数
0
解决办法
685
查看次数