Android错误“无法find明确的活动类”

我有一个Android项目与几个包。 在这种情况下,包的结构是com.WAPP.SetLocation是包含我想要运行的活动的包。

在我的清单中,com.WAPP被认为是基础包:

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

我的活动在我的清单中声明如下:

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

mainScreen活动显示正常,因为它位于com.WAPP包中。 但是当我尝试运行setLocationActivity,我得到无法find显式的类错误。 这里是我如何有意图参数:

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

Solutions Collecting From Web of "Android错误“无法find明确的活动类”"

第一个参数是应用程序包,而不是活动所在的包。

你可以像这样调用Activity。

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

SYLARRRbuild议让Android自动为您解决这个问题。 因此,呼吁..

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

build议按照Java标准,将包名称全部设置为小写,类名称为CamelCased。

如果新活动与MainActivity不在同一个数据包中(您从这里调用?),请尝试在清单上声明

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

并在呼叫者

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

希望这可以帮助!

除了上面的答案之外,请确保您的活动在应用程序清单中声明

 <application android:allowBackup="true" android:label="@string/app_name" android:supportsRtl="true"> <activity android:name=".mainScreenActivity"></activity> <activity android:name=".SetLocation.setLocationActivity"></activity> </application> 

这样做:

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

如果我没有错, i.setClassName("com.WAPP.SetLocation","com.WAPP.SetLocation.setLocationActivity"); 应该是i.setClassName(getBaseContext(),"setLocationActivity"); 参考

也尝试这个语法:

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

并尝试从以下位置删除起始点:

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

在你的清单中,你将它声明为.SetLoction.setLocationActivity,但是包的名字是com.WAPP.SetLocation,所以你需要再次前缀。

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