AppCompat v22.1.0 এ আপগ্রেড করা হয়েছে এবং এখন অবৈধআর্গমেন্ট এক্সেপশন পেয়েছে: অ্যাপকম্প্যাটটি বর্তমান থিম বৈশিষ্ট্যগুলি সমর্থন করে না


336

সদ্য প্রকাশিত ভি 22.1.0 অ্যাপকম্প্যাটটি ব্যবহার করতে আমি আমার অ্যাপ্লিকেশনটিকে কেবলমাত্র আপগ্রেড করেছি এবং আমার অ্যাপ্লিকেশনটি খুললে আমি এখন নিম্নলিখিত ব্যতিক্রমগুলি পাচ্ছি।

Caused by: java.lang.IllegalArgumentException: AppCompat does not support the current theme features
        at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:360)
        at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:246)
        at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:106)

আমি কীভাবে এটি ঠিক করব?

উত্তর:


515

অ্যাপকম্প্যাটটি থিম উইন্ডো পতাকাগুলিতে যা প্রত্যাশা করে তার উপর এখন আরও কঠোর, আপনি কাঠামো থেকে কী পাবেন তার সাথে আরও ঘনিষ্ঠভাবে মিলছে।

এর পেছনের মূল কারণ হ'ল অ্যাপকম্প্যাটডায়ালগগুলি সমর্থন করা যা আমরা এই রিলিজটিতে যুক্ত করেছিলাম। তারা windowNoTitleপতাকাটির ভারী ব্যবহার করে , যা অ্যাপকম্প্যাট আগে খুব বেশি মনোযোগ দেয় নি।

সুতরাং আপনার সমস্যা সমাধানের জন্য আপনার কাছে দুটি বিকল্প রয়েছে:

সহজ উপায় হ'ল Theme.AppCompat.NoActionBarআপনার পিতামাতার থিম হিসাবে ব্যবহার করা। এটি সর্বদা সঠিক জিনিস করবে।

আপনি যদি এটি না করতে পারেন তবে (সম্ভবত আপনার অ্যাকশন বার এবং কোনও অ্যাকশন বার সমর্থন করার প্রয়োজন নেই), আপনার নিম্নলিখিতটি করা উচিত:

<style name="MyTheme" parent="Theme.AppCompat">
    ...
</style>

<style name="MyTheme.NoActionBar">
    <!-- Both of these are needed -->
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

আপনি এখন ট্র্যাক ফিরে উচিত।


129
অ্যাপকম্প্যাট রিলিজ নোটগুলিতে এই তথ্য থাকা আরও ভাল;)
ভায়াস্লাভ গায়দারজি

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

27
আমার ক্ষেত্রে আমাকে ব্যতিক্রম থেকে মুক্তি পেতে <আইটেম নাম = "অ্যান্ড্রয়েড: উইন্ডো ননটাইটেল"> সত্য </ i>
মিনম্যান

12
@ ক্রিসবানেস: আপনি গুগলে অ্যান্ড্রয়েডের সাথে কাজ করেছেন - সম্ভবত আপনি ভবিষ্যতে আরও দলকে আরও নোট প্রকাশের জন্য দলকে রাজি করতে পারেন। এইভাবে, অ্যান্ড্রয়েড বিকাশকারীরা এগুলি এন্ড্রয়েড ডিজাইনের বৈশিষ্ট্যগুলির সাথে ত্রুটিগুলি ডিবাগ করতে ব্যবহার করতে পারে সংকলন সময়ে ত্রুটিগুলি ঠেকানোর পরিবর্তে।

3
নোট করুন যে আপনাকে সম্ভবত মূল স্টাইল / থিমগুলির এক্সএমএল ফাইল এবং ভি 21 সংস্করণে উভয়ই এই পরিবর্তন করতে হবে। আমাকে ধরে ফেলেছেন.
rfay

34

যারা এই সমস্ত ঠিক করার পরেও ত্রুটি পাচ্ছেন।

থেকে উত্তরাধিকারী হন

Theme.AppCompat.Light.NoActionBar

এবং ব্যবহার করবেন না

<item name="windowActionBar">false</item>

তারপরে, আপনি কোনও ত্রুটি পাবেন না।


দুর্দান্ত উত্তর +1
সন্দীপমারাম

13

আমি আরো বললাম

<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>

তবে এটি যথেষ্ট ছিল না। পরিশেষে, ক্রিয়াকলাপে সেট কনটেন্টভিউয়ের আগে সুপার.কনরেট চালানো - আমার সমস্যাটি স্থির করেছে :)

   public void onCreate(Bundle savedInstanceState) {    

        super.onCreate(savedInstanceState);    
        setContentView(R.layout.v2_main_dash);
        ...

কৃতজ্ঞতার সাথে আপনার ক্রিয়াকলাপের পরে সেট কনটেন্টভিউয়ের উত্তরটি খুঁজে পেয়েছি, আমি এটির জন্য অর্ধ দিনের জন্য লড়াই করেছি ...
অলিভ

0

আপনার style.xmlমান-ভি 21 ফোল্ডারে এটি ব্যবহার করুন অন্য কোনও সম্পাদনার দরকার নেই

 <style name="AppTheme" parent="Theme.AppCompat">

    <!-- theme customizations -->

   <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
 </style>

ক্রিয়াকলাপের ফাইলটিতে কোনও কিছু যুক্ত করবেন না দয়া করে এটি ছেড়ে দিন

public class Main extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

11
লক্ষ করুন যে ওপি গ্রন্থাগারের রচয়িতা এবং অবিলম্বে তার নিজের প্রশ্নের উত্তর দিয়েছেন
আমির উভাল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.