ActivityNotFoundException (YES, esta actividad se declara en AndroidManifest.xml)

He encontrado unos cuantos hilos que informan de un problema similar, pero ninguno de ellos realmente ofrece algo que no he probado ya.

Una llamada tan inocente:

mActivity.startActivity(new Intent(mActivity, MyEditPreferences.class)); 

Con lo siguiente en AndroidManifest.xml:

  <application> <activity android:name="MyActivityLib" /> <activity android:name="com.example.baseapp.MyEditPreferences" android:label="@string/app_name"> </activity> </application> 

Dispara la siguiente excepción:

 06-14 14:06:50.297: ERROR/AndroidRuntime(9272): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.baseapp.paypal/com.example.baseapp.MyEditPreferences}; have you declared this activity in your AndroidManifest.xml? 

Lo que pasa es que este código funcionaba perfectamente antes de cambiarlo de un proyecto de aplicación monolítico a un proyecto de dos partes que se compone de un proyecto de biblioteca y un proyecto de aplicación.

El archivo AndroidManifest.xml es el que está en el proyecto de la biblioteca .

¿Qué debo hacer para eliminar esta ActivityNotFoundException ?

Acabo de solucionar el problema.

Todo lo que tenía que hacer era añadir el FQN al AndroidManifest.xml del proyecto de la aplicación :

 <activity android:name="com.example.baseapp.MyEditPreferences" android:label="com.example.baseapp.MyActivityLib:string/app_name"> </activity> 

De hecho, he eliminado completamente cualquier referencia a MyEditPreferences en el proyecto de la biblioteca AndroidManifest.xml y todavía funciona.

También funciona con la sentencia startActivity 1-line original:

 mActivity.startActivity(new Intent(mActivity, MyEditPreferences.class)); 

Conclusión: Es la aplicación de AndroidManifest.xml que importa, no de la biblioteca.

Tal vez esto funcionará?

 Intent mIntent = new Intent(); mIntent.setClassName(mActivity, "com.example.baseapp.MyEditPreferences"); mActivity.startActivity(mIntent); 

Si utiliza clases cuyos nombres están incluidos en un paquete de android (Configuración, Preferencias, Actividad, …), tendrá que poner esto:

 Intent i = new Intent(this, <name_of_your_package>.classname.class); 

Si no pone "name_of_your_package", el compilador pensará que se está refiriendo a la clase en el paquete android (android. *).

Sé que este es un hilo muy antiguo, pero he tenido el mismo problema. En mi caso todo lo que tenía que hacer era borrar un espurio

 import java.util.prefs.Preferences; 

Sólo compruebe su manifiesto para detectar errores que su IDE no apuntó.

  • El icono de inicio de la barra de acción PreferenceActivity no volverá a casa (a diferencia de ET :)
  • Agregar barra de acción con botón de retroceso en la actividad de preferencia
  • Cómo cargar la misma preferencia de pantalla en el detalle PreferenceFragment
  • Abrir WebView no navegador de preferenciaScreen Android
  • Establecer la fuente personalizada para el texto en PreferenceScreen
  • ¿Cómo detectar si se hicieron cambios en las preferencias?
  • ¿Es posible combinar un EditTextPreference con un CheckBoxPreference?
  • Preferencias de número en la actividad de preferencias en Android
  • ¿PreferenceFragment con el fondo transparente?
  • ¿Cómo agregar un "oyente de clic largo" a una preferencia?
  • Advertencia de método obsoleto de Android con respecto a PreferenceActivity
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.