10

Encontré algunos hilos que informan sobre un problema similar, pero none of them realmente ofrece algo que no he intentado ya.ActivityNotFoundException (SÍ, esta actividad está declarada en AndroidManifest.xml)

tan inocente llamada:

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

siguiente en el AndroidManifest.xml:

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

desencadena 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? 

Las cosas es, el código utilizado para trabajar sin problemas antes de cambiarlo de un proyecto de aplicación monolítica a un proyecto de 2 partes que s compuesto por un Proyecto de biblioteca y un Proyecto de aplicación.

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

¿Qué debo hacer para eliminar este ActivityNotFoundException?

+1

¿Cuál es com.example.baseapp.paypal ?? ¿Estás usando alguna biblioteca de PayPal? –

+0

@Ravi Vyas Sí, lo soy. Esta es la razón principal por la que rompí el proyecto de aplicación monolítica en un proyecto de dos partes: biblioteca común a todos los mercados de Android y un pequeño proyecto de aplicación (con clase de actividad derivada de la clase de actividad de la biblioteca) personalizado para cada mercado o tienda de aplicaciones Android. .¿Notaste algo? – an00b

+0

No creo que pueda crear una intención de llamar a una clase como esa que está en un paquete diferente. – Maximus

Respuesta

14

Acabo de resolver el problema.

Todo lo que tenía que hacer era poner la FQN a la de AndroidManifest.xml proyecto Aplicación:

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

De hecho, he eliminado cualquier referencia a MyEditPreferences en el Biblioteca de AndroidManifest.xml proyecto completo y que todavía funciona.

También trabaja con la declaración de 1 línea startActivity el original:

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

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

+2

Eso es lo que dice en los documentos. –

+1

¿Dónde en los documentos dice esto? ¿Puedes proporcionar un enlace? –

+0

aquí está escrito: http://developer.android.com/tools/projects/projects-eclipse.html – user1324936

1

Quizás esto funcione?

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

Gracias y +1 por la sugerencia. Lo probé y no sirvió. También encontré un hilo que describe un problema increíblemente similar: http://stackoverflow.com/questions/5363548/activitynotfound-exception-thrown-for-a-preferenceactivity-listed-in-the-manifest/5363603#5363603 El enfoque de FQN funcionó él, pero no resolvió el problema para mí. ¿Alguna otra idea? – an00b

-1

Sé que este es un hilo muy antiguo, pero acabo de tener el mismo problema. En mi caso, todo lo que tenía que hacer era eliminar una espuria

import java.util.prefs.Preferences; 
0

Si utiliza nombres de clases que se incluyen en un paquete androide (Configuración, Preferencias, actividad, ...), que tendrá que poner esto :

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

Si usted no pone "name_of_your_package", el compilador pensará que usted se refiere a la clase en el paquete de Android (Android *.).

-2

Simplemente compruebe su manifiesto por errores que su IDE no apuntó.

Cuestiones relacionadas