অফিশিয়াল ডিজাইন লাইব্রেরি থেকে ফ্লোটিংএ্যাকশনবটন দিয়ে ইনফ্লেটএক্সেপশন


88

FloatingActionButtonগুগলের সমর্থন ডিজাইন লাইব্রেরি থেকে অফিসিয়ালটি ব্যবহার করে আমি একটি বাগ পাচ্ছি ।

এখানে আমার লগকেট।

android.view.InflateException: Binary XML file line #34: Error inflating class android.support.design.widget.FloatingActionButton
at android.view.LayoutInflater.createView(LayoutInflater.java:633)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method)
at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:655)
at android.view.LayoutInflater.inflate(Unknown Source)
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
at ---.---.com.---.SubCategoryFragment.onCreateView(SubCategoryFragment.java:47)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1789)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:955)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1501)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:458)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:117)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
at android.view.LayoutInflater.createView(LayoutInflater.java:607)
... 24 more
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable()' on a null object reference
at android.graphics.drawable.LayerDrawable$ChildDrawable.<init>(LayerDrawable.java:968)
at android.graphics.drawable.LayerDrawable$LayerState.<init>(LayerDrawable.java:1014)
at android.graphics.drawable.RippleDrawable$RippleState.<init>(RippleDrawable.java:910)
at android.graphics.drawable.RippleDrawable.createConstantState(RippleDrawable.java:901)
at android.graphics.drawable.RippleDrawable.createConstantState(RippleDrawable.java:90)
at android.graphics.drawable.LayerDrawable.mutate(LayerDrawable.java:932)
at android.graphics.drawable.RippleDrawable.mutate(RippleDrawable.java:891)
at android.view.View.applyBackgroundTint(View.java:16324)
at android.view.View.setBackgroundDrawable(View.java:16193)
at android.support.design.widget.FloatingActionButton.access$201(FloatingActionButton.java:56)
at android.support.design.widget.FloatingActionButton$1.setBackgroundDrawable(FloatingActionButton.java:118)
at android.support.design.widget.FloatingActionButtonLollipop.setBackgroundDrawable(FloatingActionButtonLollipop.java:75)
at android.support.design.widget.FloatingActionButton.<init>(FloatingActionButton.java:131)
at android.support.design.widget.FloatingActionButton.<init>(FloatingActionButton.java:79)
... 27 more

আমার অ্যাপ্লিকেশনকে নির্দেশ করে এমন একমাত্র লাইন এটি যেখানে xmlফাইলটি স্ফীত করে এবং সেই ফাইলটিতে লাইনটি আমার FloatingActionButton

   <android.support.design.widget.FloatingActionButton
        android:id="@+id/myFABSubCat"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_margin="16dp"
        android:backgroundTint="@color/accent"
        android:src="@drawable/add_icon"
        app:borderWidth="0dp"
        app:elevation="4sp" />

অতিরিক্ত তথ্য:

এখানে আমার অ্যাপ্লিকেশন থিম:

<resources>

    <!-- Base application theme. -->
    <style name="MBTIAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/primary</item>
        <item name="colorPrimaryDark">@color/primaryDark</item>
        <item name="colorAccent">@color/accent</item>
        <item name="android:windowContentOverlay">@null</item>
    </style>

    <style name="ThemeNoActionBar" parent="MBTIAppTheme">
        <item name="windowActionBar">false</item>
    </style>

</resources>

হ্যাঁ, আমি একটি ব্যবহার করছি AppCompatActivity

আমি লক্ষ্য করেছি যে আমি অ্যাপকম্প্যাটটির একটি পুরানো সংস্করণ ব্যবহার করছি:

com.android.support:appcompat-v7:22.1.1

এটি আপ টু ডেট বলে মনে হচ্ছে:

compile 'com.android.support:design:22.2.0'

এছাড়াও,

minSdkVersion 16
targetSdkVersion 22

এখন, আমি GONEআমার এফএবির জন্য কিছু ক্ষেত্রে দৃশ্যমানতা সেট করেছি, তবে এটি এটি ফুলে যাওয়ার পরে এটি যাতে সমস্যা হতে পারে না।

এখন, এটি আমার 5.1 ডিভাইসের সাথে কাজ করে, তবে যে ব্যবহারকারীদের সমস্যা রয়েছে তাদের 5.0 রয়েছে।

এটি কি জানা বাগ বা সম্ভবত আমি কিছু ভুল করছি?


4
android:backgroundTintপ্রাক ললিপপ ডিভাইসগুলিতে ঝামেলা হতে পারে। app:backgroundTintপরিবর্তে ব্যবহার করুন। আমি 5.0 এর জন্য কোনও সমস্যা চিহ্নিত করতে পারি না।
মার্কাস রুবে

ধন্যবাদ এটি পরিবর্তনযোগ্য। আমি এটি পরিবর্তন করেছি এবং গ্রেডলে আমার অ্যাপকম্প্যাট লাইব্রেরি আপডেট করেছি এবং এটি সমস্যার সমাধান করে কিনা তা পরীক্ষা করে। আমি জানি না এটা আমার জন্য একটি প্রাক 5.0 ডিভাইস বা এমুলেটর উপর ক্র্যাশ না যখন আমি পরীক্ষা ছিল যদিও আমি যে আভা ছিল কিন্তু সকল ডিভাইস সমান নির্মিত হয় ...।
TheLettuceMaster

4
@ মারকাসুবেরে আমি বিশ্বাস করি এটি আপনার মন্তব্যই এই সমস্যাটিকে স্থির করেছে। আপনি যেভাবে appবলার মতো ব্যবহার না করে টিিন্টিংয়ের সাথে একটি সমস্যা যা আমি মনে করি 5.1 এর সাথে সামঞ্জস্যপূর্ণ । উত্তর হিসাবে এটিকে নির্দ্বিধায় যোগ করুন
দি লেলেটসমাস্টার

উত্তর:


225

com.android.support:appcompat-v7:21+প্রাক অ্যান্ড্রয়েড 5.1 (API স্তর 21) চলমান ডিভাইসগুলিতে উইজেটগুলি রঙ করার জন্য সমর্থন যোগ করা হয়েছে। এটির ব্যবহার করার জন্য নিশ্চিত করুন যে আপনি AppCompatথিমটি প্রসারিত বা সেট করেছেন এবং app:backgroundTintপরিবর্তে ব্যবহার করছেন android:backgroundTint

উদাহরণ:

<android.support.design.widget.FloatingActionButton 
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="16dp"
    android:src="@drawable/icon"
    app:backgroundTint="@color/accent"
    app:borderWidth="0dp" />

4
নোট করুন যে ব্যাকগ্রাউন্ড টিন্ট সমর্থনটি এপিআই 21 (অ্যান্ড্রয়েড 5.0) এ যুক্ত হয়েছিল: developer.android.com/references/android/… সুতরাং অনুমান অনুসারে, সমর্থন লাইব্রেরি ছাড়াই আপনার অ্যান্ড্রয়েড 5.0 এ ব্যাকগ্রাউন্ডটাইন্ট ব্যবহার করতে সক্ষম হওয়া উচিত। অনুশীলনে, এটি ক্র্যাশ হয়ে গেছে বলে মনে হচ্ছে এবং এটি কার্যকর করার জন্য আপনার সমর্থন লাইব্রেরি ব্যবহার করা উচিত। আমি কেবল ভেবেছিলাম যে আমি অন্য কারও জন্য বিভ্রান্ত হয়ে এটির জন্য উল্লেখ করব কেন দেব ডকুমেন্টেশনে v21 লেবেলযুক্ত একটি API আসলে v22 পর্যন্ত কাজ করে না; এটি একটি বাগ বলে মনে হচ্ছে।
ওল্ডস্কুল 4664

50

শুধু প্রতিস্থাপন

<android.support.design.widget.FloatingActionButton 
...
...
android:backgroundTint
/>

প্রতি

<android.support.design.widget.FloatingActionButton 
...
...
app:backgroundTint
/>

4
এক্সএমএনএলস যুক্ত করতে ভুলবেন না: অ্যাপ্লিকেশন = " স্কিমাস.অ্যান্ড্রয়েড .com/apk/res- auto " নেমস্পেস!
সেভ

আমার ক্ষেত্রে সমস্যাটি অ্যান্ড্রয়েডের সাথে ব্যাকগ্রাউন্ড সেট করে ছিল: ব্যাকগ্রাউন্ড বৈশিষ্ট্য। অ্যাপ্লিকেশন দিয়ে প্রতিস্থাপন করুন: ব্যাকগ্রাউন্ড
টিন্ট

13

আপনি যদি কোনও VectorDrawableCompat(ভেক্টর সম্পদ) ব্যবহার করেন তবে আপনার ব্যবহার করা উচিত:

app:srcCompat="@drawable/x"

পরিবর্তে:

android:src="@drawable/x"

7

আমি একই সমস্যা ছিল এবং বিভিন্ন সমাধান চেষ্টা করেছি। তবে যেটি আমার পক্ষে কাজ করেছে সেটি হ'ল অ্যাপকম্প্যাট এবং ডিজাইন সমর্থন লাইব্রেরি সংস্করণগুলি একই রকম তা নিশ্চিত করা। উদাহরণ স্বরূপ:

compile 'com.android.support:appcompat-v7:23.2.0'
compile 'com.android.support:design:23.2.0'

3

এই বার্তাটি পাওয়ার আরও একটি উপায় হ'ল যদি আপনি দুর্ঘটনাক্রমে বিভিন্ন মডিউলগুলিতে অ্যাপকম্প্যাট লাইব্রেরির বিভিন্ন সংস্করণ নির্দিষ্ট করে থাকেন। আপনি যখন একটি নতুন মডিউল তৈরি করেন তখন এটি সম্ভবত ঘটে থাকে, যেহেতু অ্যান্ড্রয়েড স্টুডিওর বর্তমান সংস্করণটিতে ডিফল্ট থাকে।

মাল্টি-মডিউল প্রকল্পগুলিতে এটি পরিচালনা করার একটি পরিপাটি উপায়ের জন্য দেখুন: গ্রেডলে আমি কীভাবে একক জায়গায় সাধারণ নির্ভরতা ঘোষণা করব?


3

কেবল এতে পরিবর্তন androidকরুন app:

android:backgroundTint="@color/accent"

প্রতি:

app:backgroundTint="@color/accent"

4
স্ট্যাক ওভারফ্লোতে স্বাগতম! চিত্র এবং স্ক্রিনশটগুলি কোনও পোস্টে একটি দুর্দান্ত সংযোজন হতে পারে, তবে দয়া করে নিশ্চিত হয়ে নিন যে পোস্টটি এগুলি ছাড়াই এখনও পরিষ্কার এবং দরকারী। কোড বা ত্রুটি বার্তাগুলির চিত্র পোস্ট করবেন না। পড়ুন কেন । পরিবর্তে সরাসরি পোস্টে কপি এবং পেস্ট করুন বা প্রকৃত কোড / বার্তা টাইপ করুন।
ফিল্নোর

0

আমার ক্ষেত্রে এটি ক্রিয়াকলাপ থিমের মিথ্যা কনফিগারেশনের কারণে হয়েছিল। আমি থিম। অ্যাপকম্প্যাট.এক্সএক্সএক্স অ্যাপ্লিকেশন থিম পরিবর্তন করার পরে সমস্যার সমাধান হয়েছিল।

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