Не можете устранить эту ошибку? Котлин (считыватель QR-кодов)

#android #kotlin

Вопрос:

Я кодирую это для создания QR-считывателя.

 class scannerActivity : AppCompatActivity() {

    private var qrEader: QREader ?= null

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


        val Button = findViewById<Button>(R.id.button6)
        Button.setOnClickListener {
            startActivity(Intent(this@scannerActivity, conductorMenu::class.java))}

        Dexter.withActivity(this@scannerActivity)
            .withPermissions(Manifest.permission.CAMERA)
            .withListener(object:PermissionListener, MultiplePermissionsListener {
                override fun onPermissionGranted(response: PermissionGrantedResponse?) {
                    setupCamera()
                }

                override fun onPermissionDenied(response: PermissionDeniedResponse?) {
                    Toast.makeText(this@scannerActivity, "You must enable this permission", Toast.LENGTH_LONG).show()
                }

                override fun onPermissionRationaleShouldBeShown(
                    permission: PermissionRequest?,
                    token: PermissionToken?
                ) {

                }

                override fun onPermissionsChecked(report: MultiplePermissionsReport?) {
                    TODO("Not yet implemented")
                }

                override fun onPermissionRationaleShouldBeShown(
                    permissions: MutableList<PermissionRequest>?,
                    token: PermissionToken?
                ) {

                }


            }).check()

    }

    private fun setupCamera() {
        val ToggleButton = findViewById<ToggleButton>(R.id.toggleButton)
        ToggleButton.setOnClickListener{
            if (qrEader!!.isCameraRunning){
                ToggleButton.text = "START"
                qrEader!!.stop()
            }
            else{
                ToggleButton.text = "STOP"
                qrEader!!.start()
            }
        }

        setupQrEader()
    }

    @SuppressLint("WrongViewCast")
    private fun setupQrEader() {
        val camera_view = findViewById<SurfaceView>(R.id.camera_view)
        val code_info = findViewById<TextView>(R.id.textView9)

        qrEader = QREader.Builder(this,camera_view, QRDataListener { data ->
            code_info.post { code_info.text = data }
        }).facing(QREader.BACK_CAM)
            .enableAutofocus(true)
            .height(camera_view.height)
            .width(camera_view.width)
            .build()
    }

    override fun onResume() {
        super.onResume()
        val camera_view = findViewById<SurfaceView>(R.id.camera_view)

        if (qrEader != null)
            qrEader!!.initAndStart(camera_view)
    }

    override fun onPause() {
        super.onPause()
        if (qrEader != null)
            qrEader!!.releaseAndCleanup()
    }
}

 

Это мой XML — файл

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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=".scannerActivity">

    <FrameLayout
        android:id="@ id/scannerInfo"
        android:layout_width="408dp"
        android:layout_height="567dp">

        <SurfaceView
            android:id="@ id/camera_view"
            android:layout_width="match_parent"
            android:layout_height="567dp" />

        <View
            android:layout_width="200dp"
            android:layout_height="200dp"
            android:layout_gravity="center"
            android:background="@drawable/box_shape" />

    </FrameLayout>

    <TextView
        android:id="@ id/textView9"
        android:layout_width="153dp"
        android:layout_height="28dp"
        android:text="TextView"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.12"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.916"
        android:layout_marginTop="580dp"
        tools:ignore="MissingConstraints" />

    <Button
        android:id="@ id/button6"
        android:layout_width="74dp"
        android:layout_height="38dp"
        android:text="Back"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.949"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.973"
        android:layout_marginTop="600dp"
        android:layout_marginLeft="310dp"/>

    <ToggleButton
        android:id="@ id/toggleButton"
        android:layout_width="101dp"
        android:layout_height="76dp"
        android:text="ToggleButton"
        tools:layout_editor_absoluteX="205dp"
        tools:layout_editor_absoluteY="578dp"
        tools:ignore="MissingConstraints"
        android:backgroundTint="@color/purple_500"
        android:layout_marginTop="590dp"
        android:layout_marginLeft="180dp"/>

    <EditText
        android:id="@ id/editTextTextPersonName"
        android:layout_width="154dp"
        android:layout_height="38dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:text="Name"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.126"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_marginTop="610dp"
        app:layout_constraintVertical_bias="0.991" />

</RelativeLayout>

 

Вот какая у меня ошибка. Я не могу этого понять. Там написано constraintlayout , но так оно и есть RelativeLayout . Пожалуйста, помогите мне, я новичок в котлине.

  java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.busconductor/com.example.busconductor.ConductorActivity}: android.view.InflateException: Binary XML file line #8: Error inflating class androidx.constraintlayout.widget.ConstraintLayout

 
 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
        at android.app.ActivityThread.access$800(ActivityThread.java:151)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5254)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
     Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class androidx.constraintlayout.widget.ConstraintLayout

 

Это та строка, которая выделена. this.setContentView(R.layout.activity_conductor)

Редактировать

activity_conductor_menu.xml

 <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"
    android:background="@drawable/back"
    tools:context=".conductorMenu">

    <Button
        android:id="@ id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Scanner"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@ id/button4"
        app:layout_constraintHorizontal_bias="0.396"
        app:layout_constraintStart_toEndOf="@ id/button3"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.924"
        tools:ignore="MissingConstraints" />

    <Button
        android:id="@ id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="4dp"
        android:layout_marginLeft="4dp"
        android:text="City Codes"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.923"
        tools:ignore="MissingConstraints" />

    <TextView
        android:id="@ id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:fontFamily="fantasy"
        android:text="A  Conductor"
        android:textColor="#FF000000"
        android:textSize="40sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.519"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.787" />

    <Button
        android:id="@ id/button4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="4dp"
        android:layout_marginRight="4dp"
        android:text="LogOut"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.923"
        tools:ignore="MissingConstraints" />

    <ImageView
        android:id="@ id/imageView"
        android:layout_width="340dp"
        android:layout_height="445dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.619"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.149"
        app:srcCompat="@drawable/final_logo_modified"
        tools:ignore="MissingConstraints" />

</androidx.constraintlayout.widget.ConstraintLayout>

 

Комментарии:

1. Проблема должна быть в макете (activity_conductor), прикрепленном к этому классу проводника активности::, а не в этом (activity_scanner), поэтому, пожалуйста, предоставьте нам код второго макета

2. @MahmoudAly Я обновил. Да, у этого макета есть constraintlayout макет. Это нужно изменить?

Ответ №1:

Попробуйте удалить эту строку android:background="@drawable/back" из макета activity_conductor и посмотрите, будет ли она хорошо работать..