Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用正确的androidx实现和版本扩展类androidx.constraintlayout.widget.ConstraintLayoutLayout时出错_Android_Kotlin_Android Recyclerview_Inflate Exception - Fatal编程技术网

使用正确的androidx实现和版本扩展类androidx.constraintlayout.widget.ConstraintLayoutLayout时出错

使用正确的androidx实现和版本扩展类androidx.constraintlayout.widget.ConstraintLayoutLayout时出错,android,kotlin,android-recyclerview,inflate-exception,Android,Kotlin,Android Recyclerview,Inflate Exception,我试图实现一个RecyclerView,用保存在Firebase数据库中的帖子进行填充 当我运行应用程序时,会出现以下错误: E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.price, PID: 21096 android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating cla

我试图实现一个RecyclerView,用保存在Firebase数据库中的帖子进行填充

当我运行应用程序时,会出现以下错误:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.price, PID: 21096
    android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class androidx.constraintlayout.widget.ConstraintLayoutaintLayout
    Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class androidx.constraintlayout.widget.ConstraintLayoutaintLayout
    Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.constraintlayout.widget.ConstraintLayoutaintLayout" on path: DexPathList[[zip file "/data/app/com.example.price-RzfjA-3DV5y8h2WztAw65A==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.price-RzfjA-3DV5y8h2WztAw65A==/lib/x86, /data/app/com.example.price-RzfjA-3DV5y8h2WztAw65A==/base.apk!/lib/x86, /system/lib, /vendor/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125)
我读过的所有其他帖子都建议更新实现“androidx.constraintlayout:constraintlayout:1.1.3”,并将“androidx.constraintlayout.constraintlayout”替换为“androidx.constraintlayout.widget.constraintlayout”,我已经完成了这两项工作

我的活动是:

import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.ImageButton
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.google.firebase.database.DataSnapshot
import com.google.firebase.database.DatabaseError
import com.google.firebase.database.FirebaseDatabase
import com.google.firebase.database.ValueEventListener
import com.google.firebase.storage.FirebaseStorage


class CommunityDisplay : AppCompatActivity() {
    companion object {
        private val TAG = "CommunityDisplay"
    }

    private lateinit var fStorage: FirebaseStorage
    private lateinit var fDatabase: FirebaseDatabase
    private lateinit var postAdapter: PostAdapter
    private var postList : ArrayList<Post> = ArrayList<Post>()

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

        // Set up button listeners
        val homeButton = findViewById(R.id.home_button) as ImageButton
        homeButton.setOnClickListener(object : View.OnClickListener {
            override fun onClick(v: View?) {
                val intent = Intent(this@CommunityDisplay, HomeDisplay::class.java)
                startActivity(intent)
            }

        })

        fStorage = FirebaseStorage.getInstance()
        val qsRef = fStorage.getReference("Audio/Questions")

        fDatabase = FirebaseDatabase.getInstance()
        val postsRef = fDatabase.getReference("posts")

        var postRecyclerView : RecyclerView = findViewById(R.id.postRV)
        postRecyclerView.setLayoutManager(LinearLayoutManager(this))
        postRecyclerView.hasFixedSize()

        postsRef.addValueEventListener(object : ValueEventListener {
            override fun onDataChange(ds: DataSnapshot) {
                for (postSnap in ds.getChildren()) {
                    var post : Post = postSnap.getValue(Post::class.java)!!
                    postList.add(post)
                }

                postAdapter = PostAdapter(applicationContext, postList)
                postRecyclerView.setAdapter(postAdapter)
            }

            override fun onCancelled(p0: DatabaseError) {
                Log.d("DB Error", p0.toString())

            }

        })
    }
}
导入android.content.Intent
导入android.os.Bundle
导入android.util.Log
导入android.view.view
导入android.widget.ImageButton
导入androidx.appcompat.app.appcompat活动
导入androidx.recyclerview.widget.LinearLayoutManager
导入androidx.recyclerview.widget.recyclerview
导入com.google.firebase.database.DataSnapshot
导入com.google.firebase.database.DatabaseError
导入com.google.firebase.database.FirebaseDatabase
导入com.google.firebase.database.ValueEventListener
导入com.google.firebase.storage.firebase存储
类CommunityDisplay:AppCompatActivity(){
伴星{
private val TAG=“社区显示”
}
私有lateinit var fStorage:FirebaseStorage
私有lateinit var fDatabase:FirebaseDatabase
private lateinit var postAdapter:postAdapter
私有变量postList:ArrayList=ArrayList()
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.comm_显示)
//设置按钮侦听器
val homeButton=findviewbyd(R.id.home_按钮)作为ImageButton
homeButton.setOnClickListener(对象:View.OnClickListener{
覆盖有趣的onClick(v:视图?){
val intent=intent(this@CommunityDisplay,HomeDisplay::class.java)
星触觉(意图)
}
})
fStorage=FirebaseStorage.getInstance()
val qsRef=fStorage.getReference(“音频/问题”)
fDatabase=FirebaseDatabase.getInstance()
val postsRef=fDatabase.getReference(“posts”)
var postRecyclerView:RecyclerView=findViewById(R.id.postRV)
postRecyclerView.setLayoutManager(LinearLayoutManager(此))
postRecyclerView.hasFixedSize()
addValueEventListener(对象:ValueEventListener{
覆盖数据更改(ds:DataSnapshot){
对于(ds.getChildren()中的postSnap){
var post:post=postSnap.getValue(post::class.java)!!
postList.add(post)
}
postAdapter=postAdapter(applicationContext,postList)
postRecyclerView.setAdapter(postAdapter)
}
已取消覆盖乐趣(p0:DatabaseError){
Log.d(“DB错误”,p0.toString())
}
})
}
}
我的邮政适配器是:

import android.content.Context
import android.content.Intent
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView


class PostAdapter(
    var mContext: Context,
    var mData: List<Post>
) :
    RecyclerView.Adapter<PostAdapter.MyViewHolder>() {
    override fun onCreateViewHolder(
        parent: ViewGroup,
        viewType: Int
    ): MyViewHolder {
        val row: View =
            LayoutInflater.from(mContext).inflate(R.layout.row_post_item, parent, false)
        return MyViewHolder(row)
    }

    override fun onBindViewHolder(
        holder: MyViewHolder,
        position: Int
    ) {
        holder.tvTitle.text = mData[position].title
    }

    override fun getItemCount(): Int {
        return mData.size
    }

    inner class MyViewHolder(itemView: View) :
        RecyclerView.ViewHolder(itemView) {
        var tvTitle: TextView

        init {
            tvTitle = itemView.findViewById(R.id.row_post_title)

            itemView.setOnClickListener {
                val postDetailActivity =
                    Intent(mContext, QuestionDisplay::class.java)
                val position = adapterPosition
                postDetailActivity.putExtra("title", mData[position].title)
                postDetailActivity.putExtra("audioURL", mData[position].audioURL)
                postDetailActivity.putExtra("audioPath", mData[position].audioPath)

                mContext.startActivity(postDetailActivity)
            }
        }
    }

}
导入android.content.Context
导入android.content.Intent
导入android.view.LayoutInflater
导入android.view.view
导入android.view.ViewGroup
导入android.widget.TextView
导入androidx.recyclerview.widget.recyclerview
类后适配器(
var mContext:上下文,
var-mData:List
) :
RecyclerView.Adapter(){
覆盖视图保持器(
父对象:视图组,
视图类型:Int
):MyViewHolder{
val行:视图=
LayoutFlater.from(mContext).充气(R.layout.row\u post\u项,父项,false)
返回MyViewHolder(世界其他地区)
}
覆盖BindViewHolder(
持有人:MyViewHolder,
职位:Int
) {
holder.tvTitle.text=mData[位置].title
}
重写getItemCount():Int{
返回mData.size
}
内部类MyViewHolder(itemView:View):
RecyclerView.ViewHolder(itemView){
var tvTitle:TextView
初始化{
TVTTitle=itemView.findViewById(R.id.row\U post\U title)
itemView.setOnClickListener{
val postDetailActivity=
意图(mContext,QuestionDisplay::class.java)
val位置=适配器位置
postDetailActivity.putExtra(“标题”,mData[位置].title)
postDetailActivity.putExtra(“audioURL”,mData[position].audioURL)
postDetailActivity.putExtra(“audioPath”,mData[position]。audioPath)
mContext.startActivity(postDetailActivity)
}
}
}
}
我的布局代码是:

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

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:layout_above="@+id/home_button">


            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/PageTitle"
                android:text="Questions"
                android:layout_gravity="center"
                android:textSize="30sp"
                android:textAlignment="center"
                />

            <androidx.recyclerview.widget.RecyclerView
                android:id="@+id/postRV"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />

        </LinearLayout>

        <ImageButton
            android:id="@+id/home_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginLeft="20dp"
            android:layout_marginBottom="20dp"
            android:background="@mipmap/home" />

    </RelativeLayout>


</androidx.constraintlayout.widget.ConstraintLayout>

我的回收器视图元素是:

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

    <TextView
        android:id="@+id/row_post_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginBottom="8dp"
        android:text="TextView"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayoutaintLayout>

我哪里做错了


谢谢大家!

使用
您好,谢谢您的回复。我不确定你在“我的元素”中使用它是什么意思?
androidx.constraintlayout.widget.constraintlayoutLayout
在回收器视图元素中?哦,我明白了!谢谢你,真管用!