25

我收到此错误:

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?

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

我的清单.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>
4

9 回答 9

39

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

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

</activity>
于 2012-06-06T05:23:04.057 回答
6

你也可以使用

<activity
        android:name=".Facebook.Example"
        android:label="@string/app_name" />
于 2012-06-06T07:01:42.657 回答
5

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

问题是,在调用活动中,我也在使用/导入 android.provider.Settings,所以从我在尝试启动活动时可以看到的情况来看,这两者之间存在混淆。因此,我在代码而不是清单中更改了它以包含完整路径:

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

它奏效了。当然,解决这个特定问题的另一种更好的方法是为我的活动使用更好的名称。

HTH 任何有此问题变体的人。

于 2014-04-22T11:49:54.407 回答
4

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

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

于 2017-09-11T00:55:01.360 回答
2

从您的异常中,哪一个是您的类-Facebook或者Example因为,您在清单中的包中声明为com.Android.myAppBut,对于facebook您声明的活动com.android.myApp.Facebook.ExampleAnd,

如果示例是您的活动意味着,您应该将您的活动声明为com.Android.myApp.Facebook.Example因为,它来自不同的包或您的活动名称,Facebook.Example因此您可以更好地声明您的活动,如下所示 -

<activity
        android:name="com.Android.myApp.Facebook.Example"
        android:label="@string/app_name" />
于 2012-06-06T05:35:09.303 回答
2

当缓存的清单不同步时,这可能会发生在大型项目上。我能够在 Android Studio 终端中修复它,./gradlew clean然后在 Android Studio 菜单栏中选择File > Invalidate Caches / Restart

于 2019-02-19T02:13:13.657 回答
1

只需确保您的 Activity 使用此属性进行装饰:

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

注意:仅在需要时设置 MainLauncher。

于 2016-05-03T15:10:38.250 回答
0

如果您有一个 Activity 对象(您需要启动它),则此方法有效:

 intent.setClassName(CallingActivity.this, activityToLaunch.getComponentName().getClassName());
于 2015-05-13T03:51:40.250 回答
0

如果您希望从字符串动态更改您的类,则需要使用此代码: Intent intent = new Intent().setClassName(this.getPackageName(), "com.some.other.name"); 或者您可以将结果从数组或任何其他而不是“com.some.other.name”放入。干杯!

于 2019-09-15T21:10:29.627 回答