আমি কোন সন্তোষজনক উত্তর পাই না। সুতরাং এখানে টিপস যা আমার ডেটা বাঁধাই জ্ঞানের সারাংশ।
ডেটাবাইন্ডিং সমস্যা সমাধানের টিপস
হালনাগাদ
আরও সঠিক ত্রুটি এবং পরামর্শ পেতে , আমি জোরালোভাবে অ্যান্ড্রয়েড স্টুডিও এবং গ্রেডল প্লাগইন সংস্করণটি সর্বশেষে আপডেট করার পরামর্শ দিচ্ছি। কারণ আমি এএস 3.2 সংস্করণের পরে অনেক সমস্যার মুখোমুখি হচ্ছি না।
দেখুন সর্বশেষ অ্যান্ড্রয়েড স্টুডিও , এবং সর্বশেষ Gradle প্লাগইন ।
অর্গিনাল সলিউশন
এই উত্তরটি পড়ার পরে, আপনি ক্লাস এবং ডেটা ভেরিয়েবল উভয়ের জন্য ডেটা বাইন্ডিং অটো জেনারেশনের সমস্যার মধ্যে আটকে যাবেন না ।
এই পয়েন্টগুলি একে একে পরীক্ষা করে দেখুন। এর মধ্যে যে কোনওটি আপনার কাজটি করতে পারে। 3 থেকে শেষ পয়েন্টটি সত্যই গুরুত্বপূর্ণ, তাই এগুলি মিস করবেন না।
1. ডেটা-বাঁধাই সক্ষম হয়েছে কিনা তা পরীক্ষা করুন
তোমার উচিত ছিল ডেটা সক্রিয় বাঁধাই মধ্যে build.gradle। যদি না হয় তবে এটি যুক্ত করুন এবং সিঙ্ক করুন ।
android {
...
dataBinding {
enabled = true
}
...
}
2. চেক লেআউটটি বাইন্ডিং লেআউটে রূপান্তরিত হয়
এখন আপনি যদি ডাটা বন্ডিং ক্লাসটি তৈরি করতে চান তবে আপনার অবশ্যই ডেটা বাইন্ডিং ( ট্যাগ) দিয়ে মোড়ানোxml layout উচিত <layout। এটার মতো কিছু.
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.constraint.ConstraintLayout>
</layout>
এই চেক সহ বন্ডিং ভেরিয়েবলের নামগুলি ভিউ মডেল ক্লাসের মতো সঠিক কিনা তা পরীক্ষা করে দেখুন
৩. স্বয়ংক্রিয়ভাবে উত্পাদিত বাইন্ডিং শ্রেণীর নাম?
আপনার ডেটা বাইন্ডিং ক্লাসটি বাইন্ডিং লেআউট তৈরির পরে তৈরি করা উচিত।
যদি আপনার লেআউটের নাম সাপের ক্ষেত্রে হয় activity_main.xml তবে উটের ক্ষেত্রে যেমন ডেটা বাইন্ডিং ক্লাস তৈরি করা হবে ActivityMainBinding।
4. আমদানি পরামর্শ দেখতে পাচ্ছেন না?
কখনও কখনও আপনি যখন টাইপ করেন ActivityMai..., তারপরে এটি কোনও পরামর্শ প্রদর্শন করে না , সেক্ষেত্রে ম্যানুয়ালি আমদানি করুন ।
import <yourpackage>databinding.ActivityMainBinding;
5. বিল্ড ব্যর্থ লগক্যাট পড়ুন
আপনার বিল্ডিং ব্যর্থ হলে বিন্যাসে আপনার বাঁধাই করা শ্রেণি এবং নতুন ভেরিয়েবলগুলি উত্পন্ন হবে না। সুতরাং প্রথম মেক প্রকল্পের দ্বারা জন্য Ctrl + F9 চাপুন (বিল্ড> মেক প্রকল্প) ।
- যদি কোনও বিল্ড ব্যর্থ হয় তবে ত্রুটিটি কী তা দেখুন, সাধারণত আমাদের বিন্যাস ক্ষেত্রগুলিতে ত্রুটি থাকে। ত্রুটি লগগুলি সমস্যাটির সাথে ত্রুটি লাইন নম্বরটি নির্দেশ করবে।
- বাঁধাই ব্যর্থ হতে পারে কিছু বোকা ত্রুটির কারণ যেমন সিনট্যাক্স ত্রুটি বা আমদানি অনুপস্থিত। সেক্ষেত্রে আপনি বাধ্যতামূলক ক্লাসগুলির ত্রুটি দ্বারা পূর্ণ লগক্যাট পাবেন। কিন্তু আপনি সম্পূর্ণ Logcat পড়া উচিত করার উপযুক্ত ইস্যু খুঁজে ।
Close. সাম্প্রতিক থেকে বন্ধ এবং ওপেন প্রকল্প
আমি সবসময় এটি করি কারণ এটি Rebuild/ Makeপ্রকল্পের তুলনায় অনেক কম সময় নেয় ।
- ফাইল> ক্লোজ প্রজেক্ট থেকে প্রকল্প বন্ধ করুন
- সাম্প্রতিক থেকে আবার খুলুন
নোট করুন যে আমি সাম্প্রতিক থেকে ক্লোজ এবং ওপেন পছন্দ করি কারণ এটি পুনর্নির্মাণ / পুনঃসূচনা আইডিইয়ের তুলনায় অনেক কম সময় নেয় ।
7. প্রকল্প পুনর্নির্মাণ
তবুও যদি আপনার শ্রেণি উত্পন্ন না হয়। (কিছু সময় যখন আমরা লেআউট ফাইলটি পেস্ট করি, তখন এটি ঘটে)। তারপরে ( বিল্ড বা মেক প্রজেক্ট নয় ) থেকে প্রকল্পটি পুনর্নির্মাণ করুন । এটি আপনার ডেটা বাইন্ডিং ক্লাস তৈরি করবে। ( পুনর্নির্মাণ আমার জন্য ম্যাজিক আছে। )Build> Rebuild
৮. সর্বশেষতম অ্যান্ড্রয়েড স্টুডিও রাখুন
এএস অ্যান্ড্রয়েড স্টুডিও ৩.২-এ আপডেট করার পরে , আমি মনে করেছি যে ডেটা বাইন্ডিং অটো জেনারেশনে অনেকগুলি বাগ ঠিক করা হয়েছে। সুতরাং আপনার সর্বশেষ এএসও থাকা উচিত।
জন্য সমাধান <variables
<data>
<variable
name="item"
type="com.package.Model"/>
</data>
সাধারণত, যখন আমরা বিন্যাসে একটি পরিবর্তনশীল রাখি, এটি এটির একটি গিটার এবং সেটার তৈরি করে। এবং আমরা ব্যবহার করতে পারি binding.setItem(item);এবং binding.getItem();, তবে আপনি যদি এই পদ্ধতিগুলি দেখতে না পান তবে নীচের তথ্যটি পড়ুন।
1. সাম্প্রতিক থেকে বন্ধ এবং ওপেন প্রকল্প
যদি আপনি কোনও ডেটা ভেরিয়েবল তৈরি করে থাকেন - <variableআপনার লেআউটে এবং এটি ডেটার বন্ডিং ক্লাসে এটির সেটার এবং গিটারটি প্রদর্শন করে না , তবে আপনার প্রকল্পটি বন্ধ করুন এবং সাম্প্রতিক থেকে খুলুন ।
প্রকারটি পরিবর্তন করার পরে প্রকল্পটি পরিষ্কার করুন
আপনি যদি <variableআপনার বিন্যাসে কিছুটির ধরণ পরিবর্তন করেন এবং গেটর সেটারের ধরণটি পরিবর্তন না হয় তবে ক্লিন প্রকল্প ( Build> Clean Project)
চূড়ান্ত শব্দ
অবশেষে যদি এখনও আপনার বাঁধাই করা শ্রেণি তৈরি না হয় তবে আমাদের কাছে আমাদের সবচেয়ে শক্তিশালী অস্ত্র have - অ্যান্ড্রয়েড স্টুডিও পুনরায় চালু করুন: ডি
- প্রথমত, পুনরায় চালু করার চেষ্টা করুন, এটি পুনরায় আরম্ভের পরে সর্বদা আমার বাঁধার বিন্যাসের ভেরিয়েবল উত্পন্ন করে।
- যদি এটি কাজ না করে তবে ক্যাশে ও পুনঃসূচনা অবৈধ করুন ।
আমার ডেটা বাইন্ডিং ত্রুটিগুলি সমাধান করার জন্য আমি এটাই করি। আপনি যদি আরও কোনও সমস্যা পান তবে আপনি এখানে মন্তব্য করতে পারেন।
dataBinding.enabledআপনার build.gradle মধ্যে?