java.lang.NullPointerException: आईडी के साथ आवश्यक दृश्य गुम:


11

एंड्रॉइड स्टूडियो 3.6

एप्लिकेशन में / build.gradle:

android {
viewBinding.enabled = true

यहाँ मेरा 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" />

और एक और एक्सएमएल 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" />

यहाँ मेरी गतिविधि है:

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

एप्लिकेशन को बनाने और चलाने के लिए है। अच्छा लगा।

अब मैं आई.डी. android:id="@+id/bluetoothBottonMainContainer"

इस तरह बाहरी कंटेनर के लिए:

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

एप्लिकेशन का निर्माण होता है, लेकिन जब मुझे इस लाइन में रनटाइम त्रुटि मिलती है:

binding = QrBluetoothSwipeActivityBinding.inflate(layoutInflater)

त्रुटि:

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
उस दृश्य का नाम बदलना जो NPE निर्माण कर रहा था, मेरे लिए काम कर रहा था। ड्रॉयरलैट से ड्रॉयरलैट_मैन तक गए और इसने मेरे मुद्दे को हल किया।
11m0

जवाबों:


9

मुझे इस मुद्दे का सामना करना पड़ा लेकिन मेरे मामले में मुद्दा includeझंडा है। मुझे जो वर्कअराउंड मिला है, वह है कि व्यू आइडेंटी को शामिल लेआउट के रूट व्यू की आइडी के समान बनाया जाए।

activity_layout.xml

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

my_wideget.xml

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

यह काम किया और वह निराला है।
व्राय

विश्वास नहीं कर सकता यह वास्तव में काम किया।
नेपालीडेवलपर

मैं सहमत हूं, यह गूंगा है। मेरा समाधान टैग को शामिल करने के लिए आईडी रखना था और टैग शामिल करने के लिए लेआउट संदर्भ में बाधा के शीर्ष स्तर की आईडी को हटाना था।
cking24343

विश्वास नहीं कर सकता कि एक ही नाम स्थापित करना वास्तव में मेरे लिए काम करेगा।
जेनिश

8

अपडेट करें

यह एंड्रॉइड स्टूडियो के नवीनतम बीटा, कार्नरी संस्करणों में तय किया जाना चाहिए

सामग्री टैब लेआउट टैब आइटम के साथ व्यू बाइंडिंग का उपयोग करते समय अभी भी एक समस्या है जो यहां रिपोर्ट की गई है और अभी तक तय नहीं हुई है।


यह ViewBinding में बग है जो निम्नलिखित स्थानों में समस्या ट्रैकर में रिपोर्ट किया गया है।


4
स्थिति तय? बिलकूल नही। मेरे पास अभी भी यह मुद्दा है।
पैराडॉक्सी

@Paroxy यह अब काम करना चाहिए, अपने Android स्टूडियो को नवीनतम संस्करण में अपग्रेड करें, क्योंकि एंड्रॉइड स्टूडियो में बिल्ड टूल्स से व्यूबाइंडिंग आ रही है
user158

2
मैं 12/2/2020 से एंड्रॉइड स्टूडियो 3.6 का उपयोग कर रहा हूं और फिर भी मेरी कुछ गतिविधियों के लिए समस्या दूर नहीं हुई। मेरे पास एक रेखीय लयआउट है, जिसमें उसके चिल्ड के रूप में tabLayout, viewPager आदि हैं। मेरे टैबलैट में 3 टैब आइटम हैं। मुझे टैब आइटम के लिए ID के साथ आवश्यक दृश्य गुम है। जब मैं उनकी आईडी निकालता हूं, तो यह त्रुटि दूर हो जाती है। मैं @ id / tabitem आदि जैसे साधारण आईडी का उपयोग कर रहा हूं। इस गतिविधि में नेविगेशन के साथ एक ड्रालेरआउट भी है। व्यूबाइंडिंग का उपयोग करने से, इसका टॉगल गायब हो जाता है, भले ही मैं .setDisplayHomeAsUpEnn (true) कहता हूं। अंत में मैंने टूल जोड़ा: viewBindingIgnore = "true" और उस अच्छे पुराने खोजक का उपयोग किया।
पैराडॉक्सी

1
@ परडॉक्सी मैं भी इस मुद्दे का सामना किया, यह पहले से ही रिपोर्ट किया गया है जो तय नहीं है।
user158

1
त्रुटि तब भी मेरे साथ हुई, जब <merge>गतिशील रूप से जोड़े गए दृश्य के लिए लेआउट का उपयोग करते हुए , जैसे: parent_layout.xml-> parent_layout.xmlबच्चे के लिए addView का उपयोग कर MyMergeLayoutBinding.inflate(inflater, viewGroup, false)-> माता-पिता टैग के रूप my_merge_layout.xmlमें उपयोग कर रहा है<merge>
mochadwi

1

मैं उसी बग से मिलता हूं। आप इस बग से बचने के लिए अपने "बाहरी कंटेनर" में एक आवरण दृश्य जोड़ सकते हैं।

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


यह वर्कअराउंड जैसा दिखता है
a_subscriber


0

मेरे मामले में, मैंने शामिल लेआउट के अंदर आईडी को हटा दिया और यह ठीक से काम करता है!

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 स्टूडियो संस्करण 3.6.2 है और build.gradle का संस्करण 3.6.1 है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.