【问题标题】:import kotlinx.android.synthetic.main.activity_main is not working导入 kotlinx.android.synthetic.main.activity_main 不起作用
【发布时间】:2019-02-15 16:46:05
【问题描述】:

导入 kotlinx 灰显

我想我几乎尝试了所有事情。重装Android Studio,缓存无效,新建项目同样问题。

我只是找不到解决方案

【问题讨论】:

标签: android android-studio kotlin import android-gradle-plugin


【解决方案1】:

检查“build.gradle(:app)”文件,

plugins {
    id 'com.android.application'
    id 'kotlin-android'
}

如果缺少kotlin扩展,添加kotlin-android-extensions如下图,点击“立即同步”

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-android-extensions'
}

【讨论】:

  • 这行得通。我认为新的 Android Studio 4.1 版本存在一个错误,它在项目创建时排除了扩展。
  • 它对我有用。谢谢
  • 为我工作,谢谢
  • 这是我的回答。谢谢。
【解决方案2】:

你可以试试

  • 文件 |使缓存失效/重启
  • 删除.idea文件夹
  • 干净
  • 重新导入项目

只需删除 apply plugin: 'kotlin-android-extensions' ,同步 gradle 插件,然后我再次添加它。

【讨论】:

  • 我将它添加到我的文件中,但它显示为灰色并显示“未使用的导入指令”
  • 您是否尝试过运行您的应用程序?未使用的意思是,它还没有使用,当你在你的类中使用一些 id 时会使用它。
  • 当我尝试向我的班级添加 id 时,导入行消失了
  • 非常感谢,我不知道如何,但现在它工作了
  • 删除 .idea 文件夹对我有用,我认为它开始发生是因为我切换分支并且 AS 不知道如何从那里开始
【解决方案3】:

这是一步一步的答案:

  • 从 Android 工作室的右侧单击 Gradle
  • 右键点击应用,点击Open Gradle Config
  • plugins 部分打开新源,然后添加:

id 'kotlin-android-extensions'

  • 点击sync

结果:现在可以导入kotlinx.android.synthetic.main.activity_main.*

【讨论】:

    【解决方案4】:
    module gradle
    
    apply plugin: 'kotlin-android'
    apply plugin: 'kotlin-android-extensions'
    
    dependencies {
    implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    }
    
    project gradle
    
    buildscript{
    ext.kotlin_version = '1.3.11'
    }
     dependencies {
      classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
    

    【讨论】:

    • 答案对我有用(应用插件:'kotlin-android-extensions')& 缓存无效/重启后
    【解决方案5】:

    Google 现已弃用 Synthetics。尽量避免使用它们,因为它可能会导致您的应用出现空指针异常和意外行为。

    阅读更多:

    Migrate from Kotlin synthetics to Jetpack view binding 来自官方开发者网站。

    【讨论】:

      【解决方案6】:

      只需在顶部插件部分的 build.gradle(Module:YourProjectName.app) 中添加以下行:

      plugins{
             id 'com.android.application'
             id 'kotlin-android'
             id 'kotlin-android-extensions'
      }
      

      大部分前两行已经存在,只需要添加第三行并同步项目

      【讨论】:

        【解决方案7】:

        build.gradle (:app),添加:

            buildFeatures {
                viewBinding true
            }
        

        MainActivity:

        private lateinit var binding: ActivityMainBinding
        

        修改onCreate:

            override fun onCreate(savedInstanceState: Bundle?) {
                super.onCreate(savedInstanceState)
                binding = ActivityMainBinding.inflate(layoutInflater)
                setContentView(binding.root)
                setListeners()
            }
        

        设置监听器:

            /**
             * Attaches listeners to all the views.
             */
            private fun setListeners() {
                val clickableViews: List<View> =
                    listOf(
                        binding.view1,
                        binding.view2,
                        // ...
                    )
                for (item in clickableViews) {
                    item.setOnClickListener { ... }
                }
            }
        

        【讨论】:

          【解决方案8】:

          对我来说,它只是将apply plugin: 'kotlin-android-extensions' 添加到应用程序的 build.gradle,按同步 gradle 文件,我就能够获得 synthetics

          【讨论】:

            【解决方案9】:

            Kotlin Android 扩展已弃用。迁移到 Jetpack 视图绑定。见下文: https://developer.android.com/topic/libraries/view-binding/migration

            【讨论】:

              【解决方案10】:

              简单的朋友,你忘了星号。

                  import kotlinx.android.synthetic.main.activity_main.*
              

              这只是发生在我身上。

              【讨论】:

                【解决方案11】:
                id 'kotlin-android-extensions'
                id 'kotlin-android'
                

                删除插件并添加其中两个。 id 'kotlin-android-extensions' id 'kotlin-android'

                应该添加。重新启动项目。

                所以我发现问题出在 gradle 插件中,那么您需要重新启动,重建您的项目。

                【讨论】:

                  【解决方案12】:

                  希望这个帮助...可能与从布局中获取视图的新方法有关

                  科特林:

                  1. 打开 gradle app.module 并在里面添加这一行

                    安卓{

                     android{viewBinding.enabled = true
                     ...
                    
                     }
                    

                  (然后同步)

                  1. 转到 MainActivity.kt 并执行以下操作:

                  覆盖 fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState)

                  val binding = ActivityMainBinding.inflate(layoutInflater) // 2.1

                  setContentView(binding.root) // 2.2 而不是 (R.layout.activity_main)

                  现在视图以这种方式调用

                  binding.btn1.setOnClickListener{...}
                  

                  binding.txtviewTitle.text = "Welcome to the jungle" // or any R.string
                  

                  注意:将 gradle module.app 与该行同步后,您会发现任何具有相同名称的活动+绑定

                  看2.1参考

                  【讨论】:

                    【解决方案13】:
                    buildscript {
                        ext.kotlin_version = '1.3.72'
                        repositories {
                            google()
                            jcenter()
                        }
                        dependencies {
                            classpath 'com.android.tools.build:gradle:4.1.1'
                            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
                    
                            // NOTE: Do not place your application dependencies here; they belong
                            // in the individual module build.gradle files
                        }
                    }
                    
                    distributionBase=GRADLE_USER_HOME
                    distributionPath=wrapper/dists
                    zipStoreBase=GRADLE_USER_HOME
                    zipStorePath=wrapper/dists
                    distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip
                    

                    【讨论】:

                      【解决方案14】:

                      我以这种方式解决了我的问题: 在 build.gradle 和插件中添加 id 'kotlin-android-extensions' 几秒钟后,当我写下按钮的名称时,自动 导入 kotlinx.android.synthetic.main.activity_main.* 导入代码

                      【讨论】:

                        【解决方案15】:

                        这为我修好了:

                        1. 把它放到你的 app.iml 中

                        &lt;facet type="kotlin-language" name="Kotlin"&gt; &lt;configuration version="3" platform="JVM 1.8" allPlatforms="JVM [1.8]" useProjectSettings="false"&gt; &lt;compilerSettings /&gt; &lt;compilerArguments&gt; &lt;option name="jvmTarget" value="1.8" /&gt; &lt;option name="pluginOptions"&gt; &lt;array&gt; &lt;option value="plugin:org.jetbrains.kotlin.android:enabled=true" /&gt; &lt;option value="plugin:org.jetbrains.kotlin.android:defaultCacheImplementation=hashMap" /&gt; &lt;/array&gt; &lt;/option&gt; &lt;/compilerArguments&gt; &lt;/configuration&gt; &lt;/facet&gt;

                        1. 做梯度同步

                        【讨论】:

                          猜你喜欢
                          • 1970-01-01
                          • 2015-12-10
                          • 2018-02-25
                          • 2014-03-17
                          • 2015-04-18
                          • 2017-10-13
                          • 2018-11-16
                          • 2011-10-14
                          • 2016-05-27
                          相关资源
                          最近更新 更多