2011-05-17 29 views
5

que tienen esto en preferences.xmlclase PREFERENCE que no se encuentra

<?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, la clase que utiliza este XML

public class PreferencesActivity extends PreferenceActivity { 

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

     setContentView(R.xml.preferences); 
    } 
} 

Y lo tengo declarado en el manifiesto como este

<activity android:name="com.tellthetime.PreferencesActivity" /> 

Cuando comienzo la actividad obtengo una excepción de clase no encontrada, que no entiendo.

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 

Ésta era ya formuladas here pero nadie respondió. Como se señala en ese hilo por Heiko Rupp, Android está buscando la clase en el paquete android.view, pero la clase está en android.preferences, esto realmente me ha perdido.

Respuesta

11

Estás confundiendo, que está tratando de establecer la definiciónpreferencia como el definición diseño. En primer lugar establecer un diseño para la actividad, a continuación, vincular a su preferencias XML:

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

gracias! El setContentView no es necesario aunque – Franco

+0

Sí, lo creía, pero pensé que debería agregarlo para que la distinción fuera clara. – dmon

+0

, julio de 2011: 'addPreferencesFromResource' está marcado como obsoleto. Use 'PreferenceFragment' en su lugar. –

0

El setContentView no es para PREFERENCE, sólo "addPrerencesFromResource (.. R ** yourPreference);" bien. Y su actividad para la vista yourPreference debe heredar PreferenceActivity pero no Activity.

0

No necesita el método setContentView() en PreferenceActivity.

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

Aunque está en desuso. use Preference Fragments en su lugar.

Cuestiones relacionadas