【问题标题】:Gradle build error in Android Studio for Dependent Spinner依赖微调器的 Android Studio 中的 Gradle 构建错误
【发布时间】:2020-05-05 08:23:32
【问题描述】:

我正在为我的移动应用编写代码。

我的应用是用 Kotlin 而不是 Java 编写的,但如果有人说我也会用 Java 反编译。

我目前的主要动机是使用 Spinner 选项和数据绑定在我的应用程序中添加一个依赖列表视图选项。所以我在我的 activity_order.xml 中创建了一些微调器。

这是我的 activity_order.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Order">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="138dp"
        android:layout_height="96dp"
        android:layout_marginEnd="280dp"
        android:layout_marginRight="280dp"
        android:layout_marginBottom="632dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:srcCompat="@drawable/logo_cut" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="136dp"
        android:text="DISTRICT NAME :"
        android:textColor="#000000"
        android:textSize="18sp"
        android:textStyle="bold"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.059"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="60dp"
        android:text="LIQUOR TYPE :"
        android:textColor="#000000"
        android:textSize="18sp"
        android:textStyle="bold"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.054"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView2" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="56dp"
        android:text="SHOP NAME :"
        android:textColor="#000000"
        android:textSize="18sp"
        android:textStyle="bold"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.053"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView3" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="60dp"
        android:text="LIQUOR BRAND :"
        android:textColor="#000000"
        android:textSize="18sp"
        android:textStyle="bold"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.058"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView4" />

    <TextView
        android:id="@+id/textView6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="QUANTITY :"
        android:textColor="#000000"
        android:textSize="18sp"
        android:textStyle="bold"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.05"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView5"
        app:layout_constraintVertical_bias="0.193" />

    <Spinner
        android:id="@+id/spinner_district"
        android:layout_width="166dp"
        android:layout_height="26dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/textView2"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.192" />

    <Spinner
        android:id="@+id/spinner_type"
        android:layout_width="166dp"
        android:layout_height="26dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.623"
        app:layout_constraintStart_toEndOf="@+id/textView3"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.309" />

    <Spinner
        android:id="@+id/spinner_shop"
        android:layout_width="166dp"
        android:layout_height="26dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.653"
        app:layout_constraintStart_toEndOf="@+id/textView4"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.425" />

    <Spinner
        android:id="@+id/spinner_brand"
        android:layout_width="166dp"
        android:layout_height="26dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.545"
        app:layout_constraintStart_toEndOf="@+id/textView5"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.541" />
<!--
    <Spinner
        android:id="@+id/spinner_quantity"
        android:layout_width="166dp"
        android:layout_height="26dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.698"
        app:layout_constraintStart_toEndOf="@+id/textView6"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.66" />
    -->

    <Spinner
        android:id="@+id/spinner_quantity"
        android:layout_width="166dp"
        android:layout_height="26dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.698"
        app:layout_constraintStart_toEndOf="@+id/textView6"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.66" />

    <Button
        android:id="@+id/btn1"
        android:layout_width="302dp"
        android:layout_height="34dp"
        android:layout_marginBottom="112dp"
        android:background="@drawable/custom_btn_proceed"
        android:text="PROCEED TO PAYMENT"
        android:textColor="#FFFFFF"
        android:textColorHint="#F44336"
        android:textSize="24sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/imageView3"
        app:layout_constraintVertical_bias="0.315" />

</androidx.constraintlayout.widget.ConstraintLayout>

在这个活动中,我想首先创建一个带有微调器 ID spinner_district 的依赖列表,而所有其他列表都依赖于上层微调器。

所以我首先将以下代码添加到我的 gradle 文件中

 viewBinding
             {
                 enabled=true
             }

然后开始为我的 Kotlin 文件中的列表创建一个绑定命令,如下所示

 val binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        val arrayList_District= arrayListOf<String>("Hapur","Meerut","Noida")
        val arrayAdapter_District=ArrayAdapter(applicationContext,R.layout.list_district,arrayList_District)
        binding.spParent.adapter=arrayAdapter_District

这是我命名为 Order.kt 的 activity_order.xml 的完整 kotlin 文件

package com.example.e_dukan

import android.app.Activity
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.widget.AdapterView
import android.widget.ArrayAdapter
import android.widget.Spinner
import com.example.e_dukan.databinding.ActivityMainBinding

class Order : AppCompatActivity() {

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

////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////// Binding Command for Dependent Spinner/////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////

        val binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        val arrayList_District= arrayListOf<String>("Hapur","Meerut","Noida")
        val arrayAdapter_District=ArrayAdapter(applicationContext,R.layout.list_district,arrayList_District)
        binding.spParent.adapter=arrayAdapter_District

////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////// Spinner_district View Command///////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////

        val spinner: Spinner = findViewById(R.id.spinner_district)
// Create an ArrayAdapter using the string array and a default spinner layout
        ArrayAdapter.createFromResource(
            this,
            R.array.spinner_district,
            android.R.layout.simple_spinner_item
        ).also { adapter ->
            // Specify the layout to use when the list of choices appears
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
            // Apply the adapter to the spinner
            spinner.adapter = adapter
        }

////////////////////////////////////////////////////////////////////////////////////////////////////

    }
}
/*
class Order : Activity(), AdapterView.OnItemSelectedListener {
    override fun onItemSelected(parent: AdapterView<*>, view: View, pos: Int, id: Long) {
        // An item was selected. You can retrieve the selected item using
        // parent.getItemAtPosition(pos)
        val spinner: Spinner = findViewById(R.id.spinner_district)
        spinner.onItemSelectedListener = this
    }

    override fun onNothingSelected(parent: AdapterView<*>) {
        // Another interface callback
    }
}
*/

但是当我构建 gradle 时,它​​会显示以下错误

Executing tasks: [:app:assembleDebug] in project A:\E Dukan

> Task :app:preBuild UP-TO-DATE
> Task :app:preDebugBuild UP-TO-DATE
> Task :app:compileDebugRenderscript NO-SOURCE
> Task :app:compileDebugAidl NO-SOURCE
> Task :app:dataBindingMergeDependencyArtifactsDebug UP-TO-DATE
> Task :app:dataBindingMergeGenClassesDebug UP-TO-DATE
> Task :app:generateDebugResValues UP-TO-DATE
> Task :app:generateDebugResources UP-TO-DATE
> Task :app:generateDebugBuildConfig UP-TO-DATE
> Task :app:mainApkListPersistenceDebug UP-TO-DATE
> Task :app:createDebugCompatibleScreenManifests UP-TO-DATE
> Task :app:extractDeepLinksDebug UP-TO-DATE
> Task :app:processDebugManifest UP-TO-DATE
> Task :app:mergeDebugShaders UP-TO-DATE
> Task :app:compileDebugShaders UP-TO-DATE
> Task :app:generateDebugAssets UP-TO-DATE
> Task :app:mergeDebugAssets UP-TO-DATE
> Task :app:processDebugJavaRes NO-SOURCE
> Task :app:mergeDebugResources
> Task :app:dataBindingGenBaseClassesDebug
> Task :app:processDebugResources

> Task :app:compileDebugKotlin FAILED
e: A:\E Dukan\app\src\main\java\com\example\e_dukan\Order.kt: (11, 40): Unresolved reference: ActivityMainBinding
e: A:\E Dukan\app\src\main\java\com\example\e_dukan\Order.kt: (23, 23): Unresolved reference: ActivityMainBinding

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileDebugKotlin'.
> Compilation error. See log for more details

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 9s
15 actionable tasks: 4 executed, 11 up-to-date

请帮我解决这个 gradle build 问题。

【问题讨论】:

    标签: java android android-studio kotlin gradle


    【解决方案1】:

    在数据绑定中使用的生成类将与布局名称具有相同的名称

    :未解析的引用:ActivityMainBinding

    所以你应该使用 ActivityOrderBinding 而不是 ActivityMainBinding

    换个东西

    setContentView(R.layout.activity_order)
      val binding = ActivityMainBinding.inflate(layoutInflater)
      setContentView(binding.root)
    

    val binding : ActivityOrderBinding =
    DataBindingUtil.setContentView(this, R.layout.activity_order)
    

    并获得视图使用 binding.root

    要了解更多数据绑定,请查看code lab tuto

    【讨论】:

    • 非常感谢它消除了该错误并为我提供了很多帮助,但现在只有一个错误出现,即“未解决的参考:spParent”。请帮我解决这个问题。
    • 您的布局中没有带有 spParent id 的视图。如果您想使用“spinner_district”视图,请调用 binding.spinnerDistrict。同样的事情也适用于其他视图。
    猜你喜欢
    • 2016-05-30
    • 2018-06-08
    • 2017-07-07
    • 2014-02-04
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    相关资源
    最近更新 更多