首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >所有Anko引用都是未定义的

所有Anko引用都是未定义的
EN

Stack Overflow用户
提问于 2019-01-06 02:57:29
回答 1查看 777关注 0票数 1

我对android开发完全陌生,所以我几天前才安装了Android studio。我创建了一个具有Kotlin支持和一个空活动的新项目,并希望使用anko库来创建一个对话框。

我的MainActivity.kt看起来像这样:

代码语言:javascript
复制
package me.example.com.test

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        b_test.setOnClickListener {
            makeDialog().show()
        }
    }
}

我创建了一个包含以下内容的test_dialog.kt:

代码语言:javascript
复制
package me.example.com.test

import org.jetbrains.anko.*

fun makeDialog() = alert("Test"){
    yesButton { toast("Oh…") }
    noButton {}
}

在应用程序的build.gradle中,我添加了anko的东西:

代码语言:javascript
复制
implementation "org.jetbrains.anko:anko-commons:$anko_version"

// Anko Layouts
implementation "org.jetbrains.anko:anko-sdk27:$anko_version" // sdk15, sdk19, sdk21, sdk23 are also available
implementation "org.jetbrains.anko:anko-appcompat-v7:$anko_version"

// Coroutine listeners for Anko Layouts
implementation "org.jetbrains.anko:anko-sdk27-coroutines:$anko_version"
implementation "org.jetbrains.anko:anko-appcompat-v7-coroutines:$anko_version"

// Anko SQLite
implementation "org.jetbrains.anko:anko-sqlite:$anko_version"

当我第一次从他们的GitHub复制粘贴它的时候,它是sdk25。我将其替换为27 (因为这是项目创建时选择的api )。

和我添加的项目的build.gradle:

代码语言:javascript
复制
ext.kotlin_version = '1.3.0'
ext.anko_version='0.10.8'

两个版本都有相同的问题: test_dialog.kt中的alert、yesButton、noButton和toast都是未解析的引用。

Kotlin版本最初是不同的,但是有一个关于不匹配的Kotlin版本的警告(除了未解决的引用错误),所以我更改了它。

有人知道如何解决这些未解析的引用吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-20 20:37:05

您的方法无法解析,因为alert是在某种上下文之上实现的扩展方法。可用的方法有Context.alertFragment.alertAnkoContext.alert。因此,如果您希望将警告对话框包装在另一个方法中,它还必须扩展这三个类中的一个。

因此,您的makeDialog函数应该如下所示:

代码语言:javascript
复制
fun Context.makeDialog() = alert("Test") {
    yesButton { toast("oh..") }
    noButton { }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54055223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档