【问题标题】:Cannot preview in Anko无法在 Anko 中预览
【发布时间】:2019-01-28 23:25:47
【问题描述】:

我有这个问题:

错误:

C:\Users\avi12\OneDrive\Documents\AndroidApps\WhatsApp Easy Sticker Maker\app\src\main\java\com\avi12\whatsappeasystickermaker\MainActivity.kt: (20, 13): Overload resolution ambiguity:
public inline fun ViewManager.textView(init: (@AnkoViewDslMarker TextView).() -> Unit): TextView defined in org.jetbrains.anko
public inline fun ViewManager.textView(init: (@AnkoViewDslMarker TextView).() -> Unit): TextView defined in org.jetbrains.anko

我的代码,我刚开始发现 Anko:

package com.avi12.whatsappeasystickermaker

import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import org.jetbrains.anko.design.*
import org.jetbrains.anko.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        coordinatorLayout {
            textView {
                text = "Begin by tapping the + button"
            }
            floatingActionButton {

            }
        }
    }
}

Anko 版本:0.10.8
Android Studio 版本:3.3

【问题讨论】:

    标签: android kotlin error-handling preview anko


    【解决方案1】:

    问题似乎是,在build.gradle 我有:

    dependencies {
        ...
        implementation "org.jetbrains.anko:anko-sdk25:$anko_version" // sdk15, sdk19, sdk21, sdk23 are also available
        implementation "org.jetbrains.anko:anko-appcompat-v7:$anko_version"
    }
    

    由于某种原因,这部分解决了问题(就成功构建而言,但仍然没有预览):

    dependencies {
        ...
        // implementation "org.jetbrains.anko:anko-sdk25:$anko_version" // sdk15, sdk19, sdk21, sdk23 are also available
        implementation "org.jetbrains.anko:anko-appcompat-v7:$anko_version"
    }
    

    【讨论】:

      【解决方案2】:

      ...预览仅在我们在实现 AnkoComponent 接口的外部类中定义布局时才有效。下面是我们将如何修改我们的活动以在单独的类中定义我们的视图:

      class MainActivity : AppCompatActivity() {
      
      override fun onCreate(savedInstanceState: Bundle?) {
          super.onCreate(savedInstanceState)
          MainActivityUI().setContentView(this)
      }
      
      class MainActivityUI : AnkoComponent<MainActivity> {
          override fun createView(ui: AnkoContext<MainActivity>) = with(ui) {
              verticalLayout {
                  gravity = Gravity.CENTER
                  padding = dip(20)
      
                  textView {
                      gravity = Gravity.CENTER
                      text = "Enter your request"
                      textColor = Color.BLACK
                      textSize = 24f
                  }.lparams(width = matchParent) {
                      margin = dip(20)
                  }
      
                  val name = editText {
                      hint = "What is your name?"
                  }
      
                  editText {
                      hint = "What is your message?"
                      lines = 3
                  }
      
                  button("Enter") {
                      onClick {
                          toast( "Hey ${name.text}! Thank you for contacting us. We will get in touch with you soon.")
                      }
                  }.lparams(dip(280), sp(80))
      
              }
          }
      }
      

      }

      我希望它可以解决问题,我会尽快找到...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-27
        相关资源
        最近更新 更多