【问题标题】:Unable to find explicit activity class, although it is declared in manifest无法找到显式活动类,尽管它已在清单中声明
【发布时间】:2016-03-21 09:29:37
【问题描述】:

所以我收到此错误:android.content.ActivityNotFoundException: 无法找到明确的活动类 {example.customkeyboard/android.view.Menu};

但似乎该类是在 AndroidManifest 中声明的。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="example.keyboard">

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".Menu"
        android:label="@string/title_activity_menu"
        android:theme="@style/AppTheme.NoActionBar" />
    <activity
        android:name=".EditKeyboard"
        android:label="@string/title_activity_edit_keyboard"
        android:parentActivityName=".Menu"
        android:theme="@style/AppTheme.NoActionBar">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="example.keyboard.Menu" />
    </activity>
    <activity
        android:name=".KeyboardActivity"
        android:label="@string/title_activity_keyboard"
        android:parentActivityName=".Menu"
        android:theme="@style/AppTheme.NoActionBar">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="example.keyboard.Menu" />
    </activity>
</application>

</manifest>

在 MainActivity.java 中查找导致此问题的原因:

public void goToMenu(View view){
        startActivity(new Intent(this, Menu.class));
    }

【问题讨论】:

  • 您显然在MainActivity 中导入了android.view.Menu 类,因此您必须为您的Menu Activity 类使用完全限定的类名称-example.keyboard.Menu。尽管最好只更改该类名;例如,MenuActivity.

标签: java android android-studio android-activity android-manifest


【解决方案1】:

正如迈克在评论中提到的,

您需要添加完全限定名称来解决此问题。

在“编辑器”上按 Ctrl+Alt+Shift+C 代码,您将在剪贴板中拥有完全限定的名称。

这里是example.keyboard.Menu

详情请查看this link

【讨论】:

  • 下次创建活动时应该怎么做,这样我就不必输入完整路径,而是使用关键字“this”来代替?
  • 当您在同一个包中创建文件时,您不需要更改 AndroidMenifest 文件中的路径,但您更改包而不是使用 package.filename。
  • 别担心,等我回家测试我会接受的
  • “当你在同一个包中创建文件时”你能再解释一下吗? MainActivity.java 和 Menu.java 都包含行:“package example.keyboard”所以它们应该在同一个包中对吧?清单中的某些行是否告诉我包裹不同?
  • 哦,我想我明白了,我已经用我自己的 Menu.java 文件覆盖了默认的 android.view.Menu,所以编译器不知道我想使用哪个,因此我必须要么设置完全限定名称或更改 Menu.java 名称。对吗?
【解决方案2】:

可能是缓存问题。 重命名活动解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-22
    • 2015-02-28
    相关资源
    最近更新 更多