java.lang.NullPulumException: Thiếu chế độ xem bắt buộc với ID:


11

Studio Android 3.6

trong ứng dụng / build.gradle:

android {
viewBinding.enabled = true

Đây xml của tôi:

<?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" />

và một xml khác không bao gồm trước. 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" />

đây là hoạt động của tôi:

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

ứng dụng được xây dựng và chạy. Đẹp.

Bây giờ tôi chuyển id - android:id="@+id/bluetoothBottonMainContainer"

để bên ngoài container như thế này:

<?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" />

Ứng dụng được xây dựng, nhưng khi chạy tôi gặp lỗi thời gian chạy trong dòng này:

binding = QrBluetoothSwipeActivityBinding.inflate(layoutInflater)

lỗi:

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
Đổi tên id của chế độ xem đang tạo NPE làm việc cho tôi. Đã đi từ ngăn kéoLayout đến ngăn kéoLayout_main và điều này đã giải quyết vấn đề của tôi.
11m0

Câu trả lời:


9

Tôi gặp phải vấn đề này nhưng trong trường hợp của tôi, vấn đề là includecờ. Cách giải quyết tôi tìm thấy là làm cho id khung nhìn giống với id của khung nhìn gốc của bố cục đi kèm.

activity_layout.xml

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

my_wideget.xml

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

Điều này đã làm việc và đó là wack.
Wryday

Không thể tin rằng nó thực sự hoạt động.
NepaliDeveloper

Tôi đồng ý, điều này thật ngu ngốc. Giải pháp của tôi là giữ id cho thẻ bao gồm và xóa id ở mức cao nhất của ràng buộcLayout trong tham chiếu bố cục cho thẻ bao gồm.
cking24343

Không thể tin rằng việc đặt cùng tên sẽ thực sự hiệu quả với tôi.
Jenish

8

Cập nhật

Điều này cần được sửa trong các phiên bản Beta, Carnary mới nhất của Android Studio

Vẫn có một vấn đề khi sử dụng View Binding với các mục tab tab vật liệu được báo cáo ở đây và chưa được sửa.


Đây là lỗi trong ViewBinding được báo cáo trong trình theo dõi vấn đề ở những nơi sau.


4
Tình trạng cố định? Dĩ nhiên là không. Tôi vẫn có vấn đề này.
Paradoxy

@Paradoxy nó sẽ hoạt động ngay bây giờ, nâng cấp studio Android của bạn lên phiên bản mới nhất, vì chế độ xem được đến từ các công cụ xây dựng trong Android Studio
user158

2
Tôi đang sử dụng android studio 3.6 từ ngày 12/2/2020 và vấn đề vẫn chưa biến mất đối với một số hoạt động của tôi. Tôi có linearLayout, có tabLayout, viewPager, v.v. như con của nó. Bản thân tabLayout của tôi có 3 mục tab. Tôi nhận được chế độ xem thiếu với ID cho các mục tab. Khi tôi xóa id của họ, lỗi này biến mất. Tôi đang sử dụng các id đơn giản như @ id / tabitem, v.v. Hoạt động này cũng có một ngăn kéo có điều hướng. Bằng cách sử dụng chế độ xem, chuyển đổi của nó biến mất ngay cả khi tôi gọi .setDisplayHomeAsUpEnables (đúng). Cuối cùng, tôi đã thêm các công cụ: viewBindingIgnore = "true" và sử dụng công cụ tìm kiếm cũ tốt đó.
Paradoxy

1
@Paradoxy Tôi cũng gặp phải vấn đề này, nó đã được báo cáo mà không được sửa.
dùng158

1
Lỗi vẫn xảy ra với tôi, khi sử dụng <merge>bố cục cho chế độ xem được thêm động, ví dụ: parent_layout.xml-> addView cho parent_layout.xmlcon bằng cách sử dụng MyMergeLayoutBinding.inflate(inflater, viewGroup, false)-> my_merge_layout.xmlđang sử dụng <merge>làm thẻ cha
mochadwi

1

Tôi gặp cùng một lỗi. Bạn có thể thêm chế độ xem trình bao trong "thùng chứa bên ngoài" để tránh lỗi này.

<?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>


Nó trông giống như cách giải quyết
a_subscacker

0

Vui lòng kiểm tra, có thể bạn có cùng tệp bố cục trong các mô-đun khác nhau.


0

Trong trường hợp của tôi, tôi đã xóa id bên trong bố cục đi kèm và nó hoạt động đúng!

tệp chính

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

bao gồm_layout.xml

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

Phiên bản Android Studio của tôi là 3.6.2 và phiên bản build.gradle là 3.6.1

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.