পছন্দ ফ্রেমক্যাম্প্যাটকে অগ্রাধিকার থিমটি সেট করতে হবে


114

V7 পছন্দ সমর্থন লাইব্রেরি থেকে নতুন পছন্দ ফ্রেমক্যাম্প্যাট সহ: http://developer.android.com/tools/support-library/features.html#v7- পছন্দ , আমি এই ত্রুটি পেয়েছি

E  java.lang.IllegalStateException: Must specify preferenceTheme in theme
E      at android.support.v7.preference.PreferenceFragmentCompat.onCreate(PreferenceFragmentCompat.java:202)

কোন থিম সেট করা উচিত?

আপডেট: আমি ব্যবহার করার চেষ্টা করেছি

<item name="preferenceTheme">@style/PreferenceThemeOverlay</item>

@ বোগাটো প্রস্তাবিত হিসাবে তবে এটি ঠিক দেখাচ্ছে না এবং ললিপপ এমনকি খুব হোলো দেখাচ্ছে।

সহায়তা গ্রন্থাগার:

এখানে চিত্র বর্ণনা লিখুন

নেটিভ পছন্দসমূহ:

এখানে চিত্র বর্ণনা লিখুন


2
: এই জন্য ডকুমেন্টেশন সম্পর্কে একটি বাগ এখানে code.google.com/p/android/issues/...
Intrications

1
ব্যক্তিগতভাবে আমি মনে করি না যে এই সমাধানগুলি কার্যবিধির জন্য মূল্যবান। ব্যবহার করে দেখুন github.com/kolavar/android-support-v4-preferencefragment
MidasLefko

1
আপনি কি গ্রহণযোগ্য উত্তর হিসাবে স্ট্যাকওভারফ্লো.com/a/44236460/238753 চিহ্নিত করতে পারেন ?
স্যাম

উত্তর:


159

নমুনা প্রকল্পটি এখানে পাওয়া যাবে

বাগফিক্স গ্রেড নির্ভরতা হিসাবে উপলব্ধ

ডাউনলোড

এখন একটি খুব সহজ লাইব্রেরি ব্যবহার করতে পারেন। এটি করার জন্য এখানে দ্রুততম উপায় রয়েছে তবে আরও তথ্যের জন্য আপনার README টি পরীক্ষা করা উচিত।

1. আপনার মডিউল গ্রেড ফাইল আপডেট করুন:

compile 'com.takisoft.fix:preference-v7:27.0.0.0'

২. আপনার খণ্ডের বেস হিসাবে উপযুক্ত শ্রেণিটি ব্যবহার করুন

আপনি হয় PreferenceFragmentCompatবা ব্যবহার করতে পারেন PreferenceFragmentCompatDividers

( আমদানির সময় উপযুক্ত প্যাকেজটির নামটি সন্ধান করুন PreferenceFragmentCompat! )

৩. উপযুক্ত থিমটি ব্যবহার করুন

আপনার ক্রিয়াকলাপের @style/PreferenceFixThemeথিমটিকে নোঅ্যাকশনবার, হালকা ইত্যাদির মতো পরিবর্তিত স্থানে সেট করুন

আরও তথ্য এবং ব্যবহারের টিপসের জন্য, প্রকল্পের পৃষ্ঠায় যান


পিএস এই বিভাগে আপনি বিস্তারিত সমাধান খুঁজে পেতে পারেন যা লাইব্রেরি তৈরির দিকে নিয়ে গেছে, তবে আমি এটিকে সরিয়ে নেওয়ার সিদ্ধান্ত নিয়েছি কারণ এটি বিভ্রান্তিকর হতে পারে। আপনি যদি পদক্ষেপগুলি সম্পর্কে আগ্রহী হন তবে আপনি এখনও এই উত্তরটির পুনর্বিবেচনার ইতিহাসে সেগুলি পেতে পারেন ।


6
ডিফল্ট পাঠ্যের আকার খুব বড়, আমি সাফল্য ছাড়াই আপনি চিহ্নিত এই স্টাইলগুলি ব্যবহার করে এটি পরিবর্তন করার চেষ্টা করেছি। আপনি সম্ভবত পাঠ্যের আকার সামঞ্জস্য করতে পরিচালনা করেছেন?
তিনিশে

4
আমি সেখানে উপাদান নকশা রাখার চেষ্টা করছি, তবে সত্যই সফল নয় ... প্রক্রিয়া চলাকালীন আমি যা আবিষ্কার করেছি তা হ'ল ভি 7 পছন্দ প্যাকটি সামগ্রীতে থিমযুক্ত স্টাইল, বিন্যাস এবং অন্যান্য ফাইলগুলি হারিয়ে যাচ্ছে। এদিকে, ভি 14 এর মধ্যে কিছু রয়েছে, তবে ভি 14 এর সমস্যাটি হ'ল এটি দেশীয় খণ্ডটি প্রসারিত করে, সমর্থনটি নয়। আমি মনে করি গুগল এখানে এখানে একটি সত্যিই বড় ভুল করেছে, আশা করি তারা এটিকে
তাত্ক্ষণিকভাবে

1
আমি প্রাক -১ 21 ডিভাইসগুলির জন্য উপাদানটির নকশাটি জায়গায় রাখার চেষ্টা করতে পারি, তারা এখনকার মতো আসল দেখাচ্ছে।
জের্গেলি কুরসি

2
আপনার এও উল্লেখ করা উচিত যে ওপেন ডায়ালগের সাথে ঘোরানো হলে পছন্দসই ফ্রেমমেন্ট কমপ্যাট ক্র্যাশ হয়। কোড.google.com/p/android/issues/detail?id=186160
হেডস্কে

21
এটি হাস্যকর। সমস্ত সংস্করণে এই কাজটি 100% করার জন্য প্রয়োজনীয় সমস্ত বাগ, ওয়ার্কআরউন্ড এবং পরীক্ষার মাধ্যমে কোনও উপায় খুঁজে বের করার চেয়ে স্ক্র্যাচ থেকে একটি অগ্রাধিকার অংশ তৈরি করতে আমার কম সময় লাগবে।
এডওয়ার্ড ভ্যান রাক

46

আপনার পছন্দের ক্রিয়াকলাপের থিমে আপনাকে অগ্রাধিকার থিমটি নির্দিষ্ট করতে হবে।

উদাহরণ স্বরূপ :

<style name="SettingsTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
</style>

পছন্দের থিম ওভারলে হ'ল ডিফল্ট থিম যা প্রিফারেন্স-ভি 7 সমর্থন লাইব্রেরি নিয়ে আসে।


14
এটি কাজ করে তবে এটি ভুল দেখাচ্ছে। পছন্দের উপাদানগুলির ফন্টগুলি খুব বড় (অ্যান্ড্রয়েড ৪.১ এবং ৫.১ এ পরীক্ষিত)।

@ মুস 65 এটাই সমস্যা। আমি অনুমান করেছিলাম আমার সেই থিমটি ব্যবহার করা উচিত তবে এটি দেখতে খারাপ দেখাচ্ছে। আমি মূল প্রশ্নে আরও বিশদ যুক্ত করেছি।
সূচনা

3
আমি এটিকে সঠিক উত্তর হিসাবে নির্বাচন করেছি কারণ এটিই প্রথম যা সঠিক থিমটি সেট করতে বলেছিল। তবে সমর্থন গ্রন্থাগার যে পছন্দ অনুযায়ী মেটারিয়াল ডিজাইন ব্যবহার তাই সংশোধন করা দরকার code.google.com/p/android/issues/detail?id=183376
Intrications

আমি কীভাবে থিমটিকে উপাদান-নকশাকে দেখাব? বর্তমানে এটি আমার জন্য নেটিভ লুক দেখায় ...
অ্যান্ড্রয়েড বিকাশকারী

1
নীচে আমার উত্তর পড়ুন।
জার্জি কারিসি

35

গুগল এই সমস্যাটি স্থির করে বলে মনে হচ্ছে। আমি পছন্দটিকে v14- সমর্থন সংস্করণ 25.3.1 দিয়ে পরীক্ষা করেছি

1) implementation 'com.android.support:preference-v14:25.3.1'আপনার গ্রেডলে যুক্ত করুন।

2) PreferenceThemeOverlay.v14.Materialপরিবর্তে শৈলীতে যুক্ত করুন PreferenceThemeOverlay

<style name="AppTheme.SettingsTheme" parent="AppTheme.NoActionBar">
    <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
</style>

3) অবশেষে, ম্যানিফেস্টে শৈলী যুক্ত করুন

android:theme="@style/AppTheme.SettingsTheme"

এই উত্তরের সাথে একমাত্র সমস্যা হ'ল পছন্দের খণ্ডটি কিটক্যাট এবং এর নীচে চলমান সিস্টেমগুলিতে উপাদান থিম ব্যবহার করবে। সেট preferenceThemeথেকে PreferenceThemeOverlay.v14styles.xmlএবং PreferenceThemeOverlay.v14.Materialstyles-v21.xmlসমস্যা সংশোধন করা হয়েছে।
জ্যাক মিস্টার

@ জ্যাকমিস্টার আপনি যদি এপিআই স্তর 14 বা উচ্চতর লক্ষ্য করে থাকেন তবে আপনার কেবলমাত্র v14 সংস্করণটি ব্যবহার করা উচিত। পুরানো সংস্করণগুলির সাথে থিমের অসঙ্গতি আপনার একমাত্র সমস্যা হতে পারে না যখন আপনি পুরানো এপিআই স্তরের সাথে ভি 14 ব্যবহার করেন।
জেলমার ব্র্যান্ডস

@ জেলমারব্র্যান্ডস অবশ্যই: আপনার 14 এর নীচে এপিআই লেভেল চলমান সিস্টেমে একটি ভি 14 সমর্থন লাইব্রেরি ব্যবহার করা উচিত নয়। আমার মন্তব্যটি minSdkVersion14 এবং 20 এর মধ্যে ধরে নিয়েছে ।
জ্যাক মিস্টার

23.4.0 এর সাথে পরীক্ষিত, যা ঠিক তেমনি কাজ করে। ভি 14-পছন্দ ব্যবহার করা, ভি 7-পছন্দ নয়, কী।
ব্যবহারকারী 149408

14

পছন্দের ফ্রেমক্যাম্প্যাটটি ব্যবহার করতে আপনাকে preferenceThemeআপনার থিমটিতে সেট করতে হবে :

<style name="AppTheme" parent="@style/Theme.AppCompat.Light">
  ...
  <item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
</style>

এইভাবে আপনি preferenceThemeআপনার ক্রিয়াকলাপের অন্যান্য অংশগুলিকে প্রভাবিত না করে প্রতিটি পছন্দ টাইপের জন্য ব্যবহৃত লেআউটগুলিকে স্টাইল করতে পছন্দসই করতে পারেন ।


নিশ্চিত করুন যে আপনি সঠিক শৈলী যা আপনার কার্যকলাপের জন্য থিম হিসেবে সেট করুন হয় preferenceTheme যোগ করা হয় stackoverflow.com/a/40736138/1572286
Youness

14

আমি এই থিমটিতে কেবল এই লাইনটি যুক্ত করেছি এবং এটি 19 এবং ততোধিকের এপিআইতে নিখুঁতভাবে কাজ করে।

<item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>

3
এটি সহজতম, কার্যক্ষম সমাধান, এর জন্য কোনও অতিরিক্ত নির্ভরতা প্রয়োজন। আইএমএইচও গ্রহণযোগ্য উত্তর হওয়া উচিত, এখন বেশিরভাগ অ্যাপ্লিকেশনগুলি নূন্যতম এপিআই 14+ হয়
লুই সিএডি

অ্যান্ড্রয়েড স্টুডিওগুলি এটি খুঁজে
ডেনি

3
com.android.support:preferences-v14: to build.gradle
সোফি সফটওয়্যার এলএলসি

3

সমাধান যা আমার জন্য এপিআই 25 এ কাজ করেছে I আমার এই ডিফল্ট থিমটি ছিল:

<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

এবং এটি এই লাইন যুক্ত

<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
</style>

পছন্দ থিমওভারলে ইতিমধ্যে সংজ্ঞায়িত ছিল, আমাকে এটি অন্তর্ভুক্ত করতে হবে না। এটি আমার নিজের Android 4.x এবং 5.x ডিভাইসে কাজ করেছে


2

এই কোডটি আপনার স্টাইলস.এক্সএমএল এ যুক্ত করুন এবং এটি অনুসারে সংশোধন করুন। এটা ঠিক কাজ করা উচিত।

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
</style>

<style name="PreferenceThemeOverlay">
    <item name="preferenceScreenStyle">@style/Preference.PreferenceScreen</item>
    <item name="preferenceFragmentStyle">@style/PreferenceFragment</item>
    <item name="preferenceCategoryStyle">@style/Preference.Category</item>
    <item name="preferenceStyle">@style/Preference</item>
    <item name="preferenceInformationStyle">@style/Preference.Information</item>
    <item name="checkBoxPreferenceStyle">@style/Preference.CheckBoxPreference</item>
    <item name="switchPreferenceCompatStyle">@style/Preference.SwitchPreferenceCompat</item>
    <item name="dialogPreferenceStyle">@style/Preference.DialogPreference</item>
    <item name="editTextPreferenceStyle">@style/Preference.DialogPreference.EditTextPreference</item>
    <item name="preferenceFragmentListStyle">@style/PreferenceFragmentList</item>
</style>


1

আমি আমার স্টাইলে "প্রিফারেন্স থিম" আইটেমটি যুক্ত করেছি এবং এটি সমস্যার সমাধান করেছে বলে মনে হয়েছে:

   <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
     <item name="android:actionBarStyle">@style/MyActionBarTheme</item>
     <item name="colorPrimary">@color/ColorPrimary</item>
     <item name="colorPrimaryDark">@color/ColorPrimaryDark</item>
     <item name="preferenceTheme">@style/Preference</item>
 </style>

1

আমার জন্য সবচেয়ে সহায়ক সাইট: মাঝারি Medium

লেখক দেখায় যে আমাদের দুটি প্যাকেজ যুক্ত করতে হবে: com.android.support:preference-v7এবং com.android.support:preference-v14, কারণ এটি প্রথমটি শৈলী ছাড়াই বিতরণ করা হচ্ছে।

যদি এটি কাজ করে তবে আমাকে জানান


0

স্বীকৃত "টাকিসফট ফিক্স" টি বরং কলুষিত বলে মনে হচ্ছে এবং এটির সাথে খেলা করার পরে, আমি এখনও ফলাফলের চেহারাতে সন্তুষ্ট নই।

আপনার যদি API 9+ PreferenceFragmentসমর্থন লাইব্রেরির প্রয়োজন হয় তবে আমি উপাদান পছন্দ সাপোর্ট লাইব্রেরি ব্যবহার করার পরামর্শ দিই । এটি নিখুঁতভাবে কাজ করে (কমপক্ষে আমার জন্য)।


0

সমস্যাটি ঘটে কারণ এএপিটি (অ্যান্ড্রয়েড অ্যাসেট প্যাকেজিং সরঞ্জাম) কিছু সংস্থান খুঁজে পায় না। নিম্নলিখিত হিসাবে এই সমস্যাটি ঠিক করুন:

1. কপি সংস্থানগুলি যা কোনও নতুন প্রতিক্রিয়াশীল রিসোর্স ফোল্ডারের জন্য প্রয়োজনীয়, যেমন_র নাম_র_আর_ফু_ভি 7_প্রিফারেন্স বা অন্য কিছু named

২. আপনার অ্যাপ্লিকেশনটি তৈরি করতে গ্রেডের ব্যবহার এবং বিল্ডড্রেডল (মডিউলের) এর মতো কিছু অতিরিক্ত এএপিটি বিকল্প যুক্ত করুন:

android {
    ...
    aaptOptions {
        additionalParameters '-S',
            'src/main/res_fw_v17_leanback',  // resources in frameworks/support/v17/leanback
            '-S',
            'src/main/res_fw_v7_preference',  // resources in frameworks/support/v7/preference
            '-S',
            'src/main/res_fw_v14_preference',  // resources in frameworks/support/v14/preference
            '-S',
            'src/main/res_fw_v17_preference-leanback',  // resources in frameworks/support/v17/preference-leanback
            '-S',
            'src/main/res_fw_v7_appcompat',  // resources in frameworks/support/v7/appcompat
            '-S',
            'src/main/res_fw_v7_recyclerview',  // resources in frameworks/support/v7/recyclerview
            '-S',
            'src/main/res',  // resources in your application
            '--auto-add-overlay',
            '--extra-packages',
            'android.support.v17.leanback:android.support.v7.preference:android.support.v14.preference:android.support.v17.preference:android.support.v7.appcompat:android.support.v7.recyclerview'
    noCompress 'foo', 'bar'
    ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~'
    }
    ...
}

আশা করি এটি সহায়ক হবে :)


0

উত্তরের জন্য @ সার্জিও ধন্যবাদ, <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>পরিবর্তে <item name="preferenceTheme">@style/Preference</item>আমার জন্য দুর্দান্ত কাজ করে।

<style name="IntentTheme" parent="Theme.AppCompat">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:actionModeBackground">@color/fulltransparent</item>
        <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>

-8

কেবল এটিকে যেতে দিন এবং API 11+ ব্যবহার করুন।

API 7 এখন প্রায় সাত বছর বয়সী।

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