Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android error "unable to find explicit activity class"

I have an android project with several packages. The structure of the packages in this case is com.WAPP.SetLocation is the package that contains the activity I want to run.

In my manifest, com.WAPP is considered the base package:

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

My activities are declared in my manifest as:

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

The mainScreen activity displays fine, since it is inside the com.WAPP package. But when I try to run the setLocationActivity, I get the unable to find explicit class error. Here is how I have the intent parameters:

Intent i = new Intent();             i.setClassName("com.WAPP.SetLocation",                            "com.WAPP.SetLocation.setLocationActivity");             startActivity(i); 
like image 931
Johnny Rocket Avatar asked Nov 12 '11 21:11

Johnny Rocket


2 Answers

The first parameter is application package not the package where the activity is.

You can invoke the Activity like this.

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

It is preferred as SYLARRR suggested to have Android automatically figure that out for you. Hence the call as..

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

It's recommended per java standards to have the package name all lower-cased and the class name as CamelCased.

like image 60
Jeremy Edwards Avatar answered Sep 19 '22 13:09

Jeremy Edwards


If the new activity not in the same packet with MainActivity(you call from here?), try declare on manifest

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

and in the caller

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

Hope this helps!

like image 26
Huy Hóm Hỉnh Avatar answered Sep 20 '22 13:09

Huy Hóm Hỉnh