2011-11-12 12 views
19

Tengo un proyecto de Android con varios paquetes. La estructura de los paquetes en este caso es com.WAPP.SetLocation es el paquete que contiene la actividad que deseo ejecutar.Error de Android "no se puede encontrar la clase de actividad explícita"

En mi manifiesto, com.WAPP se considera el paquete base:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.WAPP" 
     android:versionCode="1" 
     android:versionName="1.0"> 

Mis actividades se declaran en mi manifiestan como:

<activity android:name=".mainScreenActivity"></activity> 
<activity android:name=".SetLocation.setLocationActivity"></activity> 

La actividad mainScreen muestra muy bien, ya que es en el interior el paquete com.WAPP. Pero cuando intento ejecutar setLocationActivity, no puedo encontrar un error de clase explícito. Aquí es cómo tengo los parámetros intención:

Intent i = new Intent(); 
      i.setClassName("com.WAPP.SetLocation", 
          "com.WAPP.SetLocation.setLocationActivity"); 
      startActivity(i); 

Respuesta

1

Si no me equivoco, el i.setClassName("com.WAPP.SetLocation","com.WAPP.SetLocation.setLocationActivity"); debe ser i.setClassName(getBaseContext(),"setLocationActivity");Reference

También intente la siguiente sintaxis:

startActivity(new Intent(MyActivity.this, setLocationActivity.class)); 

y tratar de retirar la partida punto desde:

<activity android:name=".SetLocation.setLocationActivity"></activity> 
24

El primer parámetro es , paquete de aplicación, no el paquete donde se encuentra la actividad.

Puede invocar la actividad de esta manera.

Intent i = new Intent(); 
i.setClassName("com.WAPP", 
       "com.WAPP.SetLocation.setLocationActivity"); 
startActivity(i); 

Se prefiere que SYLARRR sugiera que Android lo descubra automáticamente. Por lo tanto la llamada como ..

startActivity(new Intent(this, setLocationActivity.class)); 

Está recomendado por las normas java para tener el nombre de paquete todo entubado inferior y el nombre de la clase como CamelCased.

2

Hacerlo de esta manera:

Intent intent = new Intent(); 
intent.setComponent(
     new ComponentName("com.WAPP", "com.WAPP.SetLocation.setLocationActivity")); 
startActivity(i); 
12

Si la nueva actividad no en el mismo paquete con MainActivity (se llama a partir de ahora?), Trata de declarar en el manifiesto

<activity android:name="com.WAPP.SetLocation.setLocationActivity"></activity> 

y en el llamador

Intent intent = new Intent(this, setLocationActivity.class); 
startActivity(intent); 

Hope this helps!

7

En adicional a las respuestas anteriores asegurarse de que sus actividades se declaran dentro de la aplicación en el manifiesto

<application 
    android:allowBackup="true" 
    android:label="@string/app_name" 
    android:supportsRtl="true"> 

    <activity android:name=".mainScreenActivity"></activity> 
    <activity android:name=".SetLocation.setLocationActivity"></activity> 

</application> 
0

en su manifiesto que declararon como .SetLoction.setLocationActivity pero el nombre del paquete es com.WAPP .SetLocation , por lo que debe volver a colocar el prefijo.

Intent i = new Intent(); 
      i.setClassName("com.WAPP.SetLocation", 
          "com.WAPP.SetLocation.SetLocation.setLocationActivity"); 
      startActivity(i); 
Cuestiones relacionadas