ডেটা বাইন্ডিং ক্লাসটি সর্বশেষ স্টুডিওতে তৈরি হয় না 3..6


11

আজ আমি আমার অ্যান্ড্রয়েড স্টুডিও 3.5.3 থেকে 3.6 এ আপডেট করেছি। এখন, আমি কোনও ডেটা বাঁধাই ক্লাস তৈরি করতে সক্ষম নই। অ্যান্ড্রয়েড স্টুডিও এটি নিজেরাই ডেটা-বাইন্ডিং-ইমেল ফাইল তৈরি করে।

কেউ কি এই জাতীয় সমস্যার মুখোমুখি?

গ্রেডেল র‍্যাপার.প্রপার্টি:

distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip

প্রকল্প স্তরের গ্রেড ফাইল:

dependencies {
        classpath 'com.android.tools.build:gradle:3.5.3'
}

অ্যাপ স্তরের গ্রেড ফাইল:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'androidx.navigation.safeargs'
android {
 dataBinding {
        enabled = true
    }
    // Using Lambda Expressions
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

gradle.properties:

kotlin.code.style=official
android.databinding.enableV2=true
kotlin.incremental=true
kapt.incremental.apt=true

নীচে আমার ক্রিয়াকলাপ এবং এক্সএমএল ফাইলগুলি রয়েছে: ক্রিয়াকলাপ:

class ActivityMain : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        var binding = DataBindingUtil.setContentView<ActivityMainBinding>(this, R.layout.activity_main)
    }
}

এক্সএমএল:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <data>
        <import type="android.view.View" />
     <!--   <variable
            name="loading"
            type="Boolean" />-->
        <variable
            name="bottomMenu"
            type="Boolean" />
        <variable
            name="clickListener"
            type="com.ecom.side_menu.SideMenuClickHandler" />
    </data>
    <androidx.drawerlayout.widget.DrawerLayout
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:fitsSystemWindows="false"
        android:layout_height="match_parent">

        <androidx.constraintlayout.widget.ConstraintLayout
            android:id="@+id/container"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <include
                android:id="@+id/layToolbar"
                layout="@layout/layout_toolbar"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <androidx.fragment.app.FragmentContainerView
                android:id="@+id/splash_host"
                android:name="androidx.navigation.fragment.NavHostFragment"
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:background="@android:color/white"
                app:defaultNavHost="true"
                app:layout_constraintBottom_toTopOf="@+id/bottomNavigationView"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/layToolbar"
                app:navGraph="@navigation/splash_graph" />

            <com.google.android.material.bottomnavigation.BottomNavigationView
                android:id="@+id/bottomNavigationView"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="0dp"
                android:layout_marginEnd="0dp"
                android:background="@color/colorPrimary"
                android:visibility="@{safeUnbox(bottomMenu) ? View.VISIBLE : View.GONE}"
                app:itemBackground="@color/colorPrimary"
                app:itemIconTint="@android:color/white"
                app:itemTextColor="@android:color/white"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:menu="@menu/menu_navigation_dashboard" />


         <!--   <include
                android:id="@+id/progressLayoutId"
                layout="@layout/layout_progress"
                android:visibility="@{safeUnbox(loading) ? View.VISIBLE : View.GONE}"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent" />-->

        </androidx.constraintlayout.widget.ConstraintLayout>

        <com.google.android.material.navigation.NavigationView
            android:id="@+id/navigationView"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:background="@android:color/white"
            android:fitsSystemWindows="true"
            android:visibility="visible">
            <include
                android:id="@+id/customDrawerList"
                app:clickListener="@{clickListener}"
                layout="@layout/drawer_list" />
        </com.google.android.material.navigation.NavigationView>

    </androidx.drawerlayout.widget.DrawerLayout>

</layout>

সরকারী সমাধান:

গুগল এই সমস্যাটি সমাধান করেছে। অ্যান্ড্রয়েড স্টুডিও ৩.6.২ এর নতুন প্যাচটি আপডেট করার পরে, আমি একাধিক উত্স সেট সহ ডেটাবাইন্ডিং ক্লাস তৈরি করতে সক্ষম হয়েছি


আমি নিজেই আজ স্টুডিও আপডেট করি এবং & ডেটা বন্ডিং ক্লাসগুলিও ব্যবহার করি .. এটি দুর্দান্তভাবে কাজ করছে ভাই
সুন্দর উমং

কেবল ক্যাশেগুলিকে অবৈধ করুন এবং আপনার স্টুডিওটি পুনরায় চালু করুন;)
চমৎকার u

@ নাইসুমাং আমি ক্যাশেগুলিকে অকার্যকর করে পুনরায় চালু করার চেষ্টা করেছি, পাশাপাশি আমি বিল্ড ফোল্ডারটিও মুছতে চেষ্টা করেছি .. তবে এখনও একই ত্রুটি
মেহতা

আপনি কী আপনার এক্সএমএল এবং ক্লাসটি দেখান যেখানে আপনি বাঁধাই ক্লাস তৈরি করেন?
সুন্দর উমং

@ নাইসুমাং ক্লাস এবং এক্সএমএল প্রশ্নের সাথে যুক্ত হয়েছে
মেহতা

উত্তর:


6

আমার সাথেও এটি ঘটেছিল। বাইন্ডিং ক্লাসগুলি আসলে উত্পন্ন হয়। প্রকল্প জরিমানা তোলে। কেবল অ্যান্ড্রয়েড স্টুডিও 3.6.1 (বা অন্তর্নিহিত গ্রেডল বিল্ড সিস্টেম, আমি যত্ন করি না) বগী এবং এই ক্লাসগুলি দেখতে পাচ্ছে না।

মধ্যবর্তী সমাধান হিসাবে, আমি কেবল উত্স সেটগুলি হ্যাক করেছি (দয়া করে নোট করুন যে নীচের অংশে বিল্ডের রূপগুলি আমার প্রকল্পের জন্য নির্দিষ্ট, আপনার এটি পুনরায় লেখার প্রয়োজন)।

android {
    ...
    sourceSets {
        demoDebug {
            java.srcDirs += 'build/generated/data_binding_base_class_source_out/demoDebug/out'
        }
        fullDebug {
            java.srcDirs += 'build/generated/data_binding_base_class_source_out/fullDebug/out'
        }
        espressoDebug {
            java.srcDirs += 'build/generated/data_binding_base_class_source_out/espressoDebug/out'
        }
        demoRelease {
            java.srcDirs += 'build/generated/data_binding_base_class_source_out/demoRelease/out'
        }
        fullRelease {
            java.srcDirs += 'build/generated/data_binding_base_class_source_out/fullRelease/out'
        }
        espressoRelease {
            java.srcDirs += 'build/generated/data_binding_base_class_source_out/espressoRelease/out'
        }
    }
    ...
}

উপরে স্টিভ দ্বারা নির্দেশিত হিসাবে: মাঝামাঝি সময়ে, আমাদের ধৈর্য সহকারে গুগল এটি ঠিক করার জন্য অপেক্ষা করতে হবে ...

সম্পাদনা

আমি ঠিক বুঝতে পেরেছি এটি আমার প্রত্যাশার চেয়ে অনেক বেশি বগী, লেআউটগুলিও ভেঙে গেছে:

দয়া করে প্রিয় গুগল: আমাদের কাছে অস্থির মধ্যবর্তী সংস্করণগুলি প্রকাশ করবেন না "

আমি আশা করি গুগল শিগগিরই এই গোলমাল ঠিক করবে ...

সম্পাদনা 2

আমি আবারও বুঝতে পেরেছি যে অ্যান্ড্রয়েড স্টুডিও ৩.6 উপরে বর্ণিত চেয়ে আরও বগী।

বিদ্যমান এসপ্রেসো পরীক্ষাগুলি কার্যকর করা খুব ভেঙে গেছে।

আমি অ্যান্ড্রয়েড স্টুডিও 3.6 এ আপগ্রেড করা থেকে দৃ strongly়ভাবে নিরুৎসাহিত করি।

আমার গড় সময়, আমরা সম্ভবত অ্যান্ড্রয়েড স্টুডিও 3.5 তে ডাউনগ্রেড করব।


ধন্যবাদ .. এই হ্যাকটি ঠিকঠাক কাজ করছে .. এখন আমি বাইন্ডিং ক্লাস তৈরি করতে সক্ষম হয়েছি।
মেহতা

হ্যাঁ, আশা করি গুগল শীঘ্রই এই বাগটি ঠিক করবে
মেহতা

1
তবে এখনও বাইন্ডিং ভেরিয়েবল xML- এ সঠিকভাবে অ্যাক্সেসযোগ্য নয়
মেহতা

দুর্ভাগ্যক্রমে, আমার উপরে EDIT তে উল্লিখিত হিসাবে :(
জিও কাইভেনেক

4

আমি অ্যান্ড্রয়েড স্টুডিও 3.6.1 ব্যবহার করছি সমস্যা যোগ করার পরে মীমাংসিত viewBinding.enabled = trueথেকে android{build.gradle:

android {

...
    dataBinding {
        enabled = true
    }
    viewBinding.enabled = true

এটি কাজ করেছে, thx ব্রো
ফানাদেজ

এটি কাজ করে !! আমি ডেটাবাইন্ডিং {সক্ষম = সত্য
missing

4

কেবলমাত্র আপনার গ্রেডল সংস্করণটি সর্বশেষে আপডেট করুন। যাও:

ফাইল> প্রকল্পের কাঠামো> গ্রেডল সংস্করণ

এবং সর্বশেষতম স্থিতিশীল সংস্করণ (বর্তমানে 6.3) নির্বাচন করুন। আপনার অ্যান্ড্রয়েড গ্রেডল প্লাগইন সংস্করণটিও যদি সর্বশেষতমের দিকে নির্দেশ করে তবে তাও পরীক্ষা করে দেখুন।


ধন্যবাদ, আমার ক্ষেত্রে এই সহায়তা! +1
তানো

3

অ্যান্ড্রয়েডস্টুডিও ৩.6.১ এর জন্য আপনি অ্যাপ স্তরের বিল্ড.gradle (: অ্যাপ) এ কোডের নীচে কোড যুক্ত করতে পারেন । আমার সমস্যাটি এই লাইনটি যুক্ত করে সমাধান করা হয়েছে, আশা করি আপনারও রয়েছে।

sourceSets {
     main {
          java.srcDirs += 'build/generated/data_binding_base_class_source_out/debug/out'
        }
    }


জিয়া কেভিনিয়েক ও আপনার পরামর্শ অনুসারে, আমি উল্লিখিত সমাধানটি যুক্ত করেছি তবে এখন প্রতিটি ভেরিয়েবলগুলি লাল আন্ডারলাইন দিয়ে প্রদর্শিত হচ্ছে ... অ্যাক্সেস করতে পারছে না
মেহতা

2

এটি প্রদর্শিত হয় যে সর্বশেষতম অ্যান্ড্রয়েড ডেটা বাইন্ডিং লাইব্রেরিতে একটি বাগ রয়েছে। প্রকল্প পরিষ্কারের কাজ হয়নি। প্রকল্পটি পুনর্নির্মাণের কাজ হয়নি। ক্যাশেগুলিকে অবৈধ করা এবং পুনরায় চালু করা কার্যকর হয়নি।

আমার জন্য কাজ করা একমাত্র সমাধানটি সংস্করণ ২ (যা অ্যান্ড্রয়েড স্টুডিওতে default.6.১ এবং তার চেয়ে বেশি উচ্চতর) এর ভার্সন ১ থেকে ডেটা বন্ডিং সংস্করণটি ফিরিয়ে আনছে এটি করার জন্য, আপনাকে সমস্ত কিছু পিছনে যেতে হবে না don't অ্যান্ড্রয়েড স্টুডিও। পরিবর্তে আপনি নিম্নলিখিত লাইনটি যুক্ত করতে পারেন gradle.properties:

android.databinding.enableV2=false

TLDR; আমি ভাবছি যে গুগল তাদের সর্বশেষ ডেটা বাঁধাই সংকলকটির সাথে ডেটা বন্ডিং করার কথা আমরা যেভাবে সম্পূর্ণভাবে পুনর্নির্মাণের সিদ্ধান্ত নিয়েছি। টিম যদি YAS সরবরাহের জন্য কাজ করছিল (তবে আরও একটি সিনট্যাক্স) অবাক হওয়ার কিছু হবে না। সর্বোপরি, DataBindingUtil.inflate<MyClassBindingImpl>সমস্ত কম্পিউটার প্রোগ্রামিংয়ের মধ্যে একটি উদ্ভট ব্যবহারের ধরণগুলির মধ্যে একটি হয়ে উঠেছে, সংযোজকটিকে জেনেরিক ডেটা বন্ডিং ক্লাসের একটি কংক্রিট বাস্তবায়ন স্বয়ংক্রিয়ভাবে তৈরি করার আগে আপনি নিজের কোডটিতে স্বয়ংক্রিয়ভাবে উত্পন্ন শ্রেণিকে উল্লেখ করতে পারেন। বিটিডাব্লু, এই কারণেই সরঞ্জামগুলির Make Projectউপস্থিতি রয়েছে। আমি ডেটা বাইন্ডিং সিনট্যাক্সের শীঘ্রই উপস্থিত হওয়ার জন্য একটি সম্পূর্ণ ওভারহল অর্ধেক আশা করি।


1

আমার এই সমস্যাটি ছিল কারণ আমি আমার লেআউটগুলি বেশ কয়েকটি ডিরেক্টরিতে পৃথক করেছিলাম এবং এগুলি বেলোয়ের মতো গ্রেডে সংজ্ঞায়িত করেছি

sourceSets {
    main {
        res.srcDirs =
                [
                        'src/main/res', 'src/main/drawable/button_icons', 'src/main/res/drawable/button_icons',

                        'src/main/res', 'src/main/layouts/user', 'src/main/res/layouts/user',
                        'src/main/res/layouts', 'src/main/layouts/user', 'src/main/res/layouts/user/register',
                        'src/main/res/layouts', 'src/main/layouts/user', 'src/main/res/layouts/user/login',
                        'src/main/res/layouts', 'src/main/layouts/user', 'src/main/res/layouts/user/profile',
                        'src/main/res/layouts', 'src/main/layouts/user', 'src/main/res/layouts/user/wallet',

                        'src/main/res/layouts/splash_layouts', 'src/main/res/layouts', 'src/main/res',

                        'src/main/res/layouts/main_layouts', 'src/main/res/layouts', 'src/main/res',
                        'src/main/res/layouts/main_layouts/sellers', 'src/main/res/layouts/main_layouts', 'src/main/res/layouts',

                        'src/main/res/layouts/dashboard_layouts', 'src/main/res/layouts', 'src/main/res',

                        'src/main/res/layouts/basket_layouts', 'src/main/res/layouts', 'src/main/res',
                        'src/main/res/layouts/factor_layouts', 'src/main/res/layouts', 'src/main/res',

                        'src/main/res/layouts/setting_layouts', 'src/main/res/layouts', 'src/main/res',
                ]
    }

}

সুতরাং আমি সমস্ত লেআউটটিকে মূল লেআউট ডিরেক্টরিতে রেখেছি এবং অন্যান্য উপ-বিন্যাস ডিরেক্টরি মুছে ফেলেছি


0

প্রকল্পটি পুনর্নির্মাণের চেষ্টা করুন এবং উত্পন্ন ফাইলগুলিতে ডেটা বাইন্ডিং ফোল্ডারটি পাওয়া যায় কিনা তা দেখুন


0

আমার সাথেও ঘটেছিল। এটি কারণ 3..6.০ এ, আমরা অ্যান্ড্রয়েড: আইডি সহ ট্যাগ অন্তর্ভুক্ত ব্যবহার করি তবে আমরা অন্য মডিউল থেকে বাঁধাই অ্যাক্সেস করতে পারি না । আমি মনে করি এই ত্রুটিটি আইডিই থেকে এসেছে কারণ আমি প্রকল্পটি সফলভাবে চালাতে পারি। একমাত্র কাজটি ঠিক করার জন্য অপেক্ষা করা বা ত্রুটিটিকে উপেক্ষা করা।


0

এটা খুবই আমাকে ঘটেছে। আমি প্রজেক্ট বিল্ডড্রেডল ফাইলটিতে স্রেফ গ্র্যাডল সংস্করণটি 3.6.0 এ আপগ্রেড করেছি এবং এখন এটি আবার কাজ করছে।


0

এটি অ্যান্ড্রয়েড স্টুডিও 3.6.3 দিয়ে স্থির করা হয়েছে বলে মনে হচ্ছে। যদিও

viewBinding.enabled = true

পরিবর্তে আমার জন্য কাজ করেছেন

viewBinding {
    enabled = true
}

অ্যান্ড্রয়েডে কাজ না করার বিষয়টি নিশ্চিত করতে পারে3.6.3
কার্তিক গারসিয়া

দয়া করে এটিকে কিছু প্রসঙ্গ দিন। এই কোড কি। কোথায় যায়?
স্টিলথ রাব্বি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.