5

मैं एक ऐप विकसित कर रहा हूं जहां मैं समर्थन लाइब्रेरी टुकड़ों का उपयोग कर रहा हूं और मैं इस समस्या पर ठोकर खा रहा हूं, जहां मैं इस पुस्तकालय का उपयोग कर PreferencesFragment (सेटिंग्स के लिए) नहीं जोड़ सकता?समर्थन पुस्तकालय

मैं कुछ सुझाव v7 PreferenceFragmentCompat उपयोग करने के लिए मिल गया है, फिर भी लगता है कि किसी कारण से मैं अपने निर्माण पथ के लिए v7 समर्थन पुस्तकालय नहीं जोड़ सकते, इसलिए मैं PreferenceFragmentCompat ...

मैं पता नहीं लगा सकते समर्थन पुस्तकालय में लोगों के बजाय नियमित टुकड़ों का उपयोग करने के लिए कोड को फिर से लिखने का प्रयास किया है, लेकिन मुझे इसके साथ कुछ समस्याएं भी थीं

यदि आप सोच रहे हैं, तो मैं समर्थन पुस्तकालय के साथ विकास कर रहा हूं क्योंकि बिग को पढ़ते समय एंड्रॉइड प्रोग्रामिंग पर नेर्ड रांच पुस्तक, कहीं भी वे हमेशा टुकड़ों के लिए समर्थन पुस्तकालय का उपयोग करने की सलाह देते हैं।

कामकाज पर कोई सुझाव, या क्या मुझे बस गैर-समर्थन संस्करण में स्विच करने का प्रयास करना चाहिए?

यहाँ मेरी build.gradle से निर्भरता हैं:

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.1.1' 
    compile 'com.android.support:design:23.1.1' 
} 
+0

आप अपने निर्माण पथ के लिए समर्थन पुस्तकालय नहीं जोड़ सकते हैं क्यों ? – Pooya

+0

क्या आप एंड्रॉइड स्टूडियो या एक्लिप्स का उपयोग कर रहे हैं? यदि आप एंड्रॉइड स्टूडियो का उपयोग कर रहे हैं तो अपनी build.gradle निर्भरता दिखाएं .... –

+1

यहां मेरी ग्रेनल निर्भरता निर्भरता है { फ़ाइल संकलित करें (शामिल करें: ['* .jar'], dir: 'libs') testCompile 'junit: junit : 4.12 ' संकलित' com.android.support:appcompat-v7:23.1.1 ' संकलन' com.android.support:design:23.1.1 ' } @DanielNugent – Stefan

उत्तर

15

appcompat v7 पुस्तकालय वास्तव में v4 समर्थन लाइब्रेरी का उपयोग करता है, तो आप स्पष्ट रूप से v7 समर्थन पुस्तकालय घटक है कि आप की जरूरत आयात करने के लिए की जरूरत है।

आपके मामले में, आप बस अपने build.gradle को compile 'com.android.support:preference-v7:23.1.1' जोड़ने की जरूरत:

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:23.1.1' 
    compile 'com.android.support:design:23.1.1' 
    compile 'com.android.support:preference-v7:23.1.1' 
} 

फिर इस काम करेगा:

import android.os.Bundle; 
import android.support.v7.preference.PreferenceFragmentCompat; 
import android.view.View; 

public class MyPreferenceFragment extends PreferenceFragmentCompat { 

    public MyPreferenceFragment() { 
     // Required empty public constructor 
    } 

    @Override 
    public void onCreatePreferences(Bundle bundle, String s) { 
     addPreferencesFromResource(R.xml.fragment_settings_pref); 
    } 
} 
+1

धन्यवाद डैनियल, मुझे कोई समस्या है खुद को धीरे-धीरे, मैं ध्यान नहीं दे रहा था कि परियोजना संरचना में निर्भरता जोड़ने से स्वचालित रूप से ग्रेड फ़ाइल को कॉन्फ़िगर किया जाएगा। – Stefan

+1

आप महोदय, मेरे दिन बचाया। – Mauker

+0

आपको [onCreatePreferences] में 'addPreferencesFromResource' रखना चाहिए) (https://developer.android.com/reference/android/support/v7/preference/PreferenceFragmentCompat.html#onCreatePreferences (android.os.Bundle,% 20java.lang.String)): "इस टुकड़े के लिए वरीयताओं को आपूर्ति करने के लिए 'ऑनक्रेट (बंडल)' के दौरान बुलाया गया है। उप-वर्गों को 'setPreferenceScreen (वरीयता स्क्रीन)' या तो सीधे या हेल्पर विधियों जैसे 'addPreferencesFromResource (int)' के रूप में कॉल करने की उम्मीद है। – matoni

संबंधित मुद्दे