Pregunta

Encontré algunos hilos informando un problema similar pero ninguno de ellos Realmente ofrece algo que aún no he probado.

Una llamada 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>

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 que este código solía funcionar sin problemas antes de cambiarlo de un proyecto de aplicación monolítica a un proyecto de 2 partes que se compone de un proyecto de biblioteca y un proyecto de aplicación.

AndroidManifest.xml es el de la biblioteca proyecto.

¿Qué necesito hacer eliminar esto? ActivityNotFoundException?

¿Fue útil?

Solución

Acabo de resolver el problema.

Todo lo que tenía que hacer era agregar el FQN al Solicitud proyecto AndroidManifest.xml:

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

De hecho, eliminé cualquier referencia a MyEditPreferences en el Biblioteca proyecto AndroidManifest.xml Completamente y todavía funciona.

También funciona con la declaración original de 1 línea StartActivity:

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

Conclusión: es la aplicación AndroidManifest.xml Eso importa, no la biblioteca.

Otros consejos

¿Quizás esto funcione?

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

Si usa clases que se incluyen en un paquete de Android (configuración, preferencias, actividad, ...), deberá 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 Android Package (Android.*).

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

import java.util.prefs.Preferences;

Simplemente revise su manifiesto en busca de errores que su IDE no apunte.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top