2011-05-17 33 views
5

मैं preferences.xml में इस राशिPreferenceScreen वर्ग नहीं मिला

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 

    <CheckBoxPreference 
     android:key="displayNotification" 
     android:title="Display notification" 
     /> 

    <ListPreference 
     android:entries="@array/languages" 
     android:key="language" 
     /> 
</PreferenceScreen> 

PreferencesActivity.java, वर्ग इस एक्सएमएल का उपयोग करता है

public class PreferencesActivity extends PreferenceActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 

     setContentView(R.xml.preferences); 
    } 
} 

और मैं इसे इस

की तरह प्रकट में घोषित किया है
<activity android:name="com.tellthetime.PreferencesActivity" /> 

जब मैं गतिविधि शुरू करता हूं तो मुझे कक्षा को अपवाद नहीं मिला, जिसे मैं समझ नहीं पा रहा हूं।

05-17 00:35:13.633: ERROR/AndroidRuntime(212): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tellthetime/com.tellthetime.PreferencesActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class PreferenceScreen 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496) 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512) 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  at android.app.ActivityThread.access$2200(ActivityThread.java:119) 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863) 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  at android.os.Handler.dispatchMessage(Handler.java:99) 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  at android.os.Looper.loop(Looper.java:123) 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  at android.app.ActivityThread.main(ActivityThread.java:4363) 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  at java.lang.reflect.Method.invoke(Method.java:521) 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  at dalvik.system.NativeStart.main(Native Method) 
05-17 00:35:13.633: ERROR/AndroidRuntime(212): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class PreferenceScreen 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:576) 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  at android.view.LayoutInflater.inflate(LayoutInflater.java:385) 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198) 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  at android.app.Activity.setContentView(Activity.java:1622) 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  at com.tellthetime.PreferencesActivity.onCreate(PreferencesActivity.java:13) 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459) 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  ... 11 more 
05-17 00:35:13.633: ERROR/AndroidRuntime(212): Caused by: java.lang.ClassNotFoundException: android.view.PreferenceScreen in loader [email protected] 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  at java.lang.ClassLoader.loadClass(ClassLoader.java:573) 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  at java.lang.ClassLoader.loadClass(ClassLoader.java:532) 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  at android.view.LayoutInflater.createView(LayoutInflater.java:466) 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  at android.view.LayoutInflater.onCreateView(LayoutInflater.java:544) 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66) 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563) 
05-17 00:35:13.633: ERROR/AndroidRuntime(212):  ... 19 more 

यह था पहले से ही here पूछा, लेकिन कोई भी जवाब दे दिया। जैसा कि हेइको रूपप द्वारा उस धागे में बताया गया है, एंड्रॉइड android.view पैकेज में कक्षा की तलाश में है, लेकिन कक्षा android.preferences में है, यह वास्तव में मुझे खो गया है।

उत्तर

11

आप उलझन में हो रहे हैं, तो आप लेआउट परिभाषा के रूप में वरीयता परिभाषा निर्धारित करने की कोशिश कर रहे हैं। सबसे पहले, गतिविधि के लिए एक लेआउट सेट करें, फिर अपनी प्राथमिकताएँ एक्सएमएल बाँध:

... 
    setContentView(R.layout.layout); 
    addPreferencesFromResource(R.xml.preferences); 
    ... 
+1

धन्यवाद! सेटकंटेंट व्यू की आवश्यकता नहीं है हालांकि – Franco

+0

हाँ, मुझे विश्वास था, लेकिन मैंने सोचा कि मुझे इसे जोड़ना चाहिए ताकि भेद स्पष्ट हो। – dmon

+0

जुलाई 2011: 'addPreferencesFromResource' को बहिष्कृत किया गया है। इसके बजाए 'वरीयता फ्रेगमेंट' का प्रयोग करें। –

0

setContentView PreferenceScreen के लिए नहीं है, बस "addPrerencesFromResource (।। आर ** yourPreference);" कुंआ। और आपके प्रेफरेंस व्यू के लिए आपकी गतिविधि को प्राथमिकता प्राप्त करना चाहिए लेकिन गतिविधि नहीं।

0

आपको में setContentView() विधि की आवश्यकता नहीं है।

public class PreferencesActivity extends PreferenceActivity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    addPreferencesFromResource(R.xml.preferences); 
    } 
} 

हालांकि यह अस्वीकृत है। इसके बजाय Preference Fragments का उपयोग करें।

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