java.lang.NullPointerException: Kimliği olan gerekli görünüm eksik:


11

Android Studio 3.6

app / build.gradle içinde:

android {
viewBinding.enabled = true

İşte benim 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"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/bluetoothBottonMainContainer"
        android:layout_width="0dp"
        android:layout_height="104dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <View
            android:id="@+id/viewPointNotSelect"
            android:layout_width="16dp"
            android:layout_height="16dp"
            android:background="@drawable/circle_transparent"
            app:layout_constraintBottom_toBottomOf="@+id/separator"
            app:layout_constraintEnd_toStartOf="@+id/separator"
app:layout_constraintTop_toTopOf="parent" />

ve başka bir xml unclude prev. xml:

 <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/bottonContainer"
        android:layout_width="0dp"
        android:layout_height="104dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent">

        <include
            android:id="@+id/qrBottonContainer"
            layout="@layout/qr_bottom_container"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent" />

İşte benim faaliyet:

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

Uygulama oluştur ve çalıştır. Güzel.

Şimdi kimliği taşıyorum - android:id="@+id/bluetoothBottonMainContainer"

dış konteynere böyle:

<?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"
    android:id="@+id/bluetoothBottonMainContainer"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="0dp"
        android:layout_height="104dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <View
            android:id="@+id/viewPointNotSelect"
            android:layout_width="16dp"
            android:layout_height="16dp"
            android:background="@drawable/circle_transparent"
            app:layout_constraintBottom_toBottomOf="@+id/separator"
            app:layout_constraintEnd_toStartOf="@+id/separator"
            app:layout_constraintTop_toTopOf="parent" />

uygulaması oluşturulmuş, ancak çalıştırıldığında bu satırda çalışma zamanı hatası alıyorum:

binding = QrBluetoothSwipeActivityBinding.inflate(layoutInflater)

hata:

10-25 11:11:51.290 E/AndroidRuntime(14128): FATAL EXCEPTION: main
10-25 11:11:51.290 E/AndroidRuntime(14128): Process: com.myproject.debug, PID: 14128
10-25 11:11:51.290 E/AndroidRuntime(14128): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myproject.debug/com.myproject.ui.actviity.QRBluetoothSwipeActivity}: java.lang.NullPointerException: Missing required view with ID: bluetoothBottonMainContainer
10-25 11:11:51.290 E/AndroidRuntime(14128):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
10-25 11:11:51.290 E/AndroidRuntime(14128):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
10-25 11:11:51.290 E/AndroidRuntime(14128):     at android.app.ActivityThread.-wrap11(ActivityThread.java)
10-25 11:11:51.290 E/AndroidRuntime(14128):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
10-25 11:11:51.290 E/AndroidRuntime(14128):     at android.os.Handler.dispatchMessage(Handler.java:102)
10-25 11:11:51.290 E/AndroidRuntime(14128):     at android.os.Looper.loop(Looper.java:148)
10-25 11:11:51.290 E/AndroidRuntime(14128):     at android.app.ActivityThread.main(ActivityThread.java:5417)
10-25 11:11:51.290 E/AndroidRuntime(14128):     at java.lang.reflect.Method.invoke(Native Method)
10-25 11:11:51.290 E/AndroidRuntime(14128):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
10-25 11:11:51.290 E/AndroidRuntime(14128):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
10-25 11:11:51.290 E/AndroidRuntime(14128): Caused by: java.lang.NullPointerException: Missing required view with ID: bluetoothBottonMainContainer
10-25 11:11:51.290 E/AndroidRuntime(14128):     at com.myproject.databinding.BluetoothBottomContainerBinding.bind(BluetoothBottomContainerBinding.java:114)
10-25 11:11:51.290 E/AndroidRuntime(14128):     at com.myproject.databinding.QrBluetoothSwipeActivityBinding.bind(QrBluetoothSwipeActivityBinding.java:76)
10-25 11:11:51.290 E/AndroidRuntime(14128):     at com.myproject.databinding.QrBluetoothSwipeActivityBinding.inflate(QrBluetoothSwipeActivityBinding.java:62)
10-25 11:11:51.290 E/AndroidRuntime(14128):     at com.myproject.databinding.QrBluetoothSwipeActivityBinding.inflate(QrBluetoothSwipeActivityBinding.java:52)
10-25 11:11:51.290 E/AndroidRuntime(14128):     at com.myproject.ui.actviity.QRBluetoothSwipeActivity.onCreate(QRBluetoothSwipeActivity.kt:31)
10-25 11:11:51.290 E/AndroidRuntime(14128):     at android.app.Activity.performCreate(Activity.java:6251)
10-25 11:11:51.290 E/AndroidRuntime(14128):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
10-25 11:11:51.290 E/AndroidRuntime(14128):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
10-25 11:11:51.290 E/AndroidRuntime(14128):     ... 9 more
10-25 11:11:51.291 W/ActivityManager(  780):   Force finishing activity com.myproject.debug/com.myproject.ui.actviity.QRBluetoothSwipeActivity
10-25 11:11:51.307 I/Icing   (11529): Indexing done com.google.android.gms-apps

3
Bir NPE üreten görünümün kimliğini yeniden adlandırmak benim için çalıştı. DrawerLayout'tan drawerLayout_main'e gittim ve bu sorunumu çözdü.
11m0

Yanıtlar:


9

Bu sorunla karşılaştım ama benim durumumda includebayrak. Bulduğum geçici çözüm, görünüm kimliğini dahil edilen mizanpajın kök görünümünün kimliğiyle aynı hale getirmektir.

activity_layout.xml

<LinearLayout>
    <include android:id="@+id/widget1" layout="@layout/my_widget" />
</LinearLayout>

my_wideget.xml

<LinearLayout
    android:id="@+id/widget1">
</LinearLayout>

Bu işe yaradı ve bu çok kötü.
Wryday

Aslında işe yaradığına inanamıyorum.
NepaliDeveloper

Katılıyorum, bu aptalca. Benim çözüm dahil etiketi için kimliğini tutmak ve dahil etiketi için düzen başvurusunda constraintLayout üst düzey kimliğini kaldırmak oldu.
cking24343

Aynı adı belirlemenin aslında benim için işe yarayacağına inanamıyorum.
Jenish

8

Güncelleme

Bu, Android Studio'nun en yeni Beta, Carnary sürümlerinde düzeltilmelidir

Burada bildirilen ve henüz düzeltilmemiş malzeme sekmesi düzen sekmesi öğeleriyle Görünüm Bağlama'yı kullanırken yine de bir sorun var.


Bu, sorun izleyicide aşağıdaki yerlerde bildirilen ViewBinding'daki hatadır.


4
Durum düzeltildi mi? Tabii ki değil. Hala bu sorunum var.
Paradoksi

@Paradoxy şimdi çalışmalı, Android stüdyonuzu en son sürüme yükseltin, çünkü görünüm bağlama Android Studio'daki oluşturma araçlarından geliyor
user158

2
12/2/2020 tarihinden itibaren android studio 3.6 kullanıyorum ve yine de sorun bazı etkinliklerim için gitmedi. Ben çocuk olarak tabLayout, viewPager, vb vardır linearLayout var. TabLayout'umda 3 sekme öğesi var. Sekme öğeleri için kimliğe sahip gerekli görünüm eksik. Kimliklerini kaldırdığımda, bu hata ortadan kalkar. @ İd / tabitem, vb. Gibi basit kimlikleri kullanıyorum. Bu etkinlikte ayrıca gezinme ile bir çekmece vardır. Viewbinding kullanarak, ben .setDisplayHomeAsUpEnabled (true) çağırmak olsa bile onun geçiş kaybolur.
Paradoxy

1
@Paradoxy Bu sorunla da karşılaştım, düzeltilmemiş olduğu bildirildi .
user158

1
<merge>Dinamik olarak eklenen görünüm için mizanpaj kullanılırken hala hata oluştu , örneğin: parent_layout.xml-> -> kullanan parent_layout.xmlçocuk için addView MyMergeLayoutBinding.inflate(inflater, viewGroup, false)-> ana etiket olarak my_merge_layout.xmlkullanılıyor<merge>
mochadwi

1

Bu hatayı karşılıyorum. Bu hatayı önlemek için "dış kabınıza" bir sarıcı görünümü ekleyebilirsiniz.

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

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="0dp"
        android:layout_height="104dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <View
            android:id="@+id/viewPointNotSelect"
            android:layout_width="16dp"
            android:layout_height="16dp"
            android:background="@drawable/circle_transparent"
            app:layout_constraintBottom_toBottomOf="@+id/separator"
            app:layout_constraintEnd_toStartOf="@+id/separator"
            app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>


Geçici çözüm gibi görünüyor
a_subscriber

0

Lütfen farklı modüllerde aynı düzen dosyalarına sahip olduğunuzu kontrol edin.


0

Benim durumumda, dahil edilen düzen içindeki kimliği kaldırdım ve düzgün çalışıyor!

main.xml

    <RelativeLayout>   
    ....
    <include
        include="@layout/included_layout"   
        android:id="@+id/view_included_layout"/>
    </RelativeLayout>

included_layout.xml

`   <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/top_level_layout">  <!-- Remove this id -->    
        ....
    </LinearLayout>
`

Android Studio sürümüm 3.6.2 ve build.gradle'ın sürümü 3.6.1

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.