android.content.ActivityNotFoundException:无法find显式的活动类

我得到这个错误:

06-06 10:45:19.685: E/AndroidRuntime(554): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.Android.myApp/com.Android.myApp.Facebook.Example}; have you declared this activity in your AndroidManifest.xml? 

但是我已经在清单文件中声明了它。 这种例外的其他原因是什么?

我的manifest.xml

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.Android.myApp" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="4" /> <uses-feature android:name="android.hardware.camera" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@android:style/Theme.Light" > <activity android:name=".SignUpActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".SignInActivity" android:label="@string/app_name" /> <activity android:name=".HomeActivity" android:label="@string/app_name" /> <activity android:name=".selectCityActivity" android:label="@string/app_name" /> <activity android:name=".FeedListViewActivity" android:label="@string/app_name" /> <activity android:name=".SearchActivity" android:label="@string/app_name" /> <activity android:name=".IWantActivity" android:label="@string/app_name" /> <activity android:name=".DateActivity" android:label="@string/app_name" /> <activity android:name=".ShareActivity" android:label="@string/app_name" /> <activity android:name=".ShareProductActivity" android:label="@string/app_name" /> <activity android:name=".SharePriceActivity" android:label="@string/app_name" /> <activity android:name=".ShareStoreActivity" android:label="@string/app_name" /> <activity android:name=".ProfileActivity" android:label="@string/app_name" /> <activity android:name=".ShowMapActivity" android:label="@string/app_name" /> <activity android:name=".ParticularEntryActivity" android:label="@string/app_name" /> <activity android:name=".MyLocationActivity" android:label="@string/app_name" /> <activity android:name=".MapMarkerActivity" android:label="@string/app_name" /> <activity android:name=".BarcodeActivity" android:label="@string/app_name" /> <activity android:name=".BarcodeResult" android:label="@string/app_name" /> <activity android:name=".FeedbackActivity" android:label="@string/app_name" /> <activity android:name=".SplashActivity" android:label="@string/app_name" /> <activity android:name=".Example" android:label="@string/app_name" /> <uses-library android:name="com.google.android.maps" /> </application> </manifest> 

Solutions Collecting From Web of "android.content.ActivityNotFoundException:无法find显式的活动类"

您在清单中声明包名称为com.Android.myApp和Activity Name .Example所以android会从com.Android.myApp.Examplesearch它。 但是,您的活动驻留在“ com.Android.myApp/com.Android.myApp.Facebook.Example ”中。因此,将活动名称指定为.Facebook.Example或完整path,如下所示在清单

 <activity android:name="com.Android.myApp.Facebook.Example"> </activity> 

你也可以使用

 <activity android:name=".Facebook.Example" android:label="@string/app_name" /> 

我得到了这个问题的变化。 我正在启动一个名为“设置”的活动,并得到相同的错误,并对清单所有build议的更改都没有解决问题。

事情是,在调用活动中,我也使用/importandroid.provider.Settings,所以从我可以看到当试图启动活动时,两者之间感到困惑。 因此,我在代码而不是清单中更改了这一点,以包含完整path:

 Intent launchScr = new Intent(this, com.foo.bar.Settings.class); 

它的工作。 当然,解决这个问题的另外一个更好的办法是使用更好的名字来进行我的活动。

HTH任何人都有这个问题的变种。

从你的例外哪一个是你的类 – FacebookExample因为,你声明在包清单为com.Android.myApp但是,对于facebook活动你声明com.android.myApp.Facebook.Example而且,

如果示例是你的活动的意思,你应该宣布你的活动为com.Android.myApp.Facebook.Example因为,它从不同的包或您的活动名称为Facebook.Example所以更好,你可以声明你的活动如下 –

 <activity android:name="com.Android.myApp.Facebook.Example" android:label="@string/app_name" /> 

只要确保你的活动是用这个属性装饰的:

 [Activity(Label = "Your App Name", MainLauncher=true)] 

注意:如果需要只设置MainLauncher。

有时,这是由于在不同包中存在相同的类名(意图的第二个参数)。

我还发现,当您调用startService而不是调用startActivity时会发生这种情况,反之亦然。

如果你有一个Activity对象(你需要启动的话)

  intent.setClassName(CallingActivity.this, activityToLaunch.getComponentName().getClassName());