screenorientation - Error de Android "no se puede encontrar la clase de actividad explícita"
androidmanifest.xml editar (7)
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.
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 están declaradas en mi manifiesto como:
<activity android:name=".mainScreenActivity"></activity>
<activity android:name=".SetLocation.setLocationActivity"></activity>
La actividad mainScreen se muestra bien, ya que está dentro del paquete com.WAPP. Pero cuando trato de ejecutar setLocationActivity, me da la incapacidad de encontrar un error de clase explícito. Aquí es cómo tengo los parámetros de intención:
Intent i = new Intent();
i.setClassName("com.WAPP.SetLocation",
"com.WAPP.SetLocation.setLocationActivity");
startActivity(i);
Además de las respuestas anteriores, asegúrese de que sus actividades se declaren dentro de la aplicación en 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>
El primer parámetro es el paquete de la aplicación, no el paquete donde se encuentra la actividad.
Puedes invocar la Actividad así.
Intent i = new Intent();
i.setClassName("com.WAPP",
"com.WAPP.SetLocation.setLocationActivity");
startActivity(i);
Es preferible que SYLARRR sugiera que Android lo descubra automáticamente por usted. De ahí la llamada como ...
startActivity(new Intent(this, setLocationActivity.class));
Según los estándares de Java, se recomienda tener el nombre del paquete en mayúsculas y el nombre de la clase como CamelCased.
En Xamarin Android, asegúrese de que su clase de actividad tenga un atributo de actividad
[Activity(Theme = "@style/MyTheme")]
public class MyActivity : ActivityBase
{
...
}
Con eso te aseguras de que tu actividad esté registrada en AndroidManifest.xml
Hazlo de esta manera:
Intent intent = new Intent();
intent.setComponent(
new ComponentName("com.WAPP", "com.WAPP.SetLocation.setLocationActivity"));
startActivity(i);
Si la nueva actividad no está en el mismo paquete con MainActivity (¿llama desde aquí?), Intente declarar en manifiesto
<activity android:name="com.WAPP.SetLocation.setLocationActivity"></activity>
y en la persona que llama
Intent intent = new Intent(this, setLocationActivity.class);
startActivity(intent);
¡Espero que esto ayude!
Si no me equivoco, i.setClassName("com.WAPP.SetLocation","com.WAPP.SetLocation.setLocationActivity");
debe ser i.setClassName(getBaseContext(),"setLocationActivity");
Reference
Prueba también esta sintaxis:
startActivity(new Intent(MyActivity.this, setLocationActivity.class));
e intenta quitar el punto inicial de:
<activity android:name=".SetLocation.setLocationActivity"></activity>
en su manifiesto, lo declaró como .SetLoction.setLocationActivity pero el nombre del paquete es com.WAPP.SetLocation, por lo que debe prefijarlo de nuevo.
Intent i = new Intent();
i.setClassName("com.WAPP.SetLocation",
"com.WAPP.SetLocation.SetLocation.setLocationActivity");
startActivity(i);