java - 启动 list 中的类时出现 ActivityNotFoundException

标签 java android android-intent android-manifest

我有一个应用程序,其主类启动了(或者至少这是我想要发生的)另外两个类。主类 WhenIGetToActivity 启动第一个类 CreateLoc 时没有错误,但在尝试启动第二个 Menu 时抛出 ActivityNotFoundException。

以下是WhenIGetToActivity中的相关代码

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    Intent myIntent = new Intent(getApplicationContext(), Menu.class);
    startActivity(myIntent);
    return true;
}
...

public boolean onTap(final GeoPoint p, final MapView mapView) {
        boolean tapped = super.onTap(p, mapView);
        if (tapped) {
            Intent myIntent = new Intent(getApplicationContext(), CreateLoc.class);
            startActivity(myIntent);
        } else {

两个辅助类都位于正确(且相同)的包中,都扩展 Activity

这是我的 list 文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="SandS.Geo.Cal"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="10" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

<application>
   android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >

    <uses-library android:name="com.google.android.maps" />

    <activity
        android:name=".WhenIGetToActivity"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.NoTitleBar" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="CreateLoc" >
    </activity>
    <activity android:name="Menu" >
    </activity>
</application>

这是 Logcat

06-21 17:30:21.479: I/ApplicationPackageManager(3891): cscCountry is not German : XEU
06-21 17:30:22.289: W/TAG(3891): Location unknown
06-21 17:30:22.329: I/MapActivity(3891): Handling network change notification:CONNECTED
06-21 17:30:22.329: E/MapActivity(3891): Couldn't get connection factory client
06-21 17:30:27.189: W/KeyCharacterMap(3891): No keyboard for id 0
06-21 17:30:27.189: W/KeyCharacterMap(3891): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
06-21 17:30:27.229: D/AndroidRuntime(3891): Shutting down VM
06-21 17:30:27.229: W/dalvikvm(3891): threadid=1: thread exiting with uncaught exception (group=0x40018578)
06-21 17:30:27.239: E/AndroidRuntime(3891): FATAL EXCEPTION: main
06-21 17:30:27.239: E/AndroidRuntime(3891): android.content.ActivityNotFoundException: Unable to find explicit activity class {SandS.Geo.Cal/android.view.Menu}; have you declared this activity in your AndroidManifest.xml?
06-21 17:30:27.239: E/AndroidRuntime(3891):     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1405)
06-21 17:30:27.239: E/AndroidRuntime(3891):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1379)
06-21 17:30:27.239: E/AndroidRuntime(3891):     at android.app.Activity.startActivityForResult(Activity.java:2827)
06-21 17:30:27.239: E/AndroidRuntime(3891):     at android.app.Activity.startActivity(Activity.java:2933)
06-21 17:30:27.239: E/AndroidRuntime(3891):     at SandS.Geo.Cal.WhenIGetToActivity.onCreateOptionsMenu(WhenIGetToActivity.java:62)
06-21 17:30:27.239: E/AndroidRuntime(3891):     at android.app.Activity.onCreatePanelMenu(Activity.java:2158)
06-21 17:30:27.239: E/AndroidRuntime(3891):     at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:325)
06-21 17:30:27.239: E/AndroidRuntime(3891):     at com.android.internal.policy.impl.PhoneWindow.onKeyDownPanel(PhoneWindow.java:570)
06-21 17:30:27.239: E/AndroidRuntime(3891):     at com.android.internal.policy.impl.PhoneWindow.onKeyDown(PhoneWindow.java:1220)
06-21 17:30:27.239: E/AndroidRuntime(3891):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1727)
06-21 17:30:27.239: E/AndroidRuntime(3891):     at android.view.ViewRoot.deliverKeyEventToViewHierarchy(ViewRoot.java:2627)
06-21 17:30:27.239: E/AndroidRuntime(3891):     at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2602)
06-21 17:30:27.239: E/AndroidRuntime(3891):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1874)
06-21 17:30:27.239: E/AndroidRuntime(3891):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-21 17:30:27.239: E/AndroidRuntime(3891):     at android.os.Looper.loop(Looper.java:130)
06-21 17:30:27.239: E/AndroidRuntime(3891):     at android.app.ActivityThread.main(ActivityThread.java:3687)
06-21 17:30:27.239: E/AndroidRuntime(3891):     at java.lang.reflect.Method.invokeNative(Native Method)
06-21 17:30:27.239: E/AndroidRuntime(3891):     at java.lang.reflect.Method.invoke(Method.java:507)
06-21 17:30:27.239: E/AndroidRuntime(3891):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
06-21 17:30:27.239: E/AndroidRuntime(3891):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
06-21 17:30:27.239: E/AndroidRuntime(3891):     at dalvik.system.NativeStart.main(Native Method)

我尝试过清理项目。

任何想法。

根据 4 个答案的建议,我更改了类的名称,我现在将其命名为 StevesToolsMenu.class

新的 onCreateOptionsMenu 现在包含以下行:

Intent myIntent = new Intent(getApplicationContext(), StevesToolsMenu.class);

list 文件的相关部分现在是:

<application>
   android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >

    <uses-library android:name="com.google.android.maps" />

    <activity
        android:name=".WhenIGetToActivity"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.NoTitleBar" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".CreateLoc" >
    </activity>
    <activity android:name=".StevesToolsMenu" >
    </activity>
</application>

新的 Logcat 是:

06-23 15:14:22.989: I/ApplicationPackageManager(4088): cscCountry is not German : XEU
06-23 15:14:23.789: W/TAG(4088): Location unknown
06-23 15:14:23.849: I/MapActivity(4088): Handling network change notification:CONNECTED
06-23 15:14:23.849: E/MapActivity(4088): Couldn't get connection factory client
06-23 15:14:30.219: W/KeyCharacterMap(4088): No keyboard for id 0
06-23 15:14:30.219: W/KeyCharacterMap(4088): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
06-23 15:14:30.289: I/ApplicationPackageManager(4088): cscCountry is not German : XEU
06-23 15:14:30.319: D/AndroidRuntime(4088): Shutting down VM
06-23 15:14:30.319: W/dalvikvm(4088): threadid=1: thread exiting with uncaught exception (group=0x40018578)
06-23 15:14:30.329: E/AndroidRuntime(4088): FATAL EXCEPTION: main
06-23 15:14:30.329: E/AndroidRuntime(4088): java.lang.RuntimeException: Unable to start activity ComponentInfo{SandS.Geo.Cal/SandS.Geo.Cal.StevesToolsMenu}: android.view.InflateException: Binary XML file line #7: Error inflating class <unknown>
06-23 15:14:30.329: E/AndroidRuntime(4088):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
06-23 15:14:30.329: E/AndroidRuntime(4088):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
06-23 15:14:30.329: E/AndroidRuntime(4088):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
06-23 15:14:30.329: E/AndroidRuntime(4088):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
06-23 15:14:30.329: E/AndroidRuntime(4088):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-23 15:14:30.329: E/AndroidRuntime(4088):     at android.os.Looper.loop(Looper.java:130)
06-23 15:14:30.329: E/AndroidRuntime(4088):     at android.app.ActivityThread.main(ActivityThread.java:3687)
06-23 15:14:30.329: E/AndroidRuntime(4088):     at java.lang.reflect.Method.invokeNative(Native Method)
06-23 15:14:30.329: E/AndroidRuntime(4088):     at java.lang.reflect.Method.invoke(Method.java:507)
06-23 15:14:30.329: E/AndroidRuntime(4088):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
06-23 15:14:30.329: E/AndroidRuntime(4088):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
06-23 15:14:30.329: E/AndroidRuntime(4088):     at dalvik.system.NativeStart.main(Native Method)
06-23 15:14:30.329: E/AndroidRuntime(4088): Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class <unknown>
06-23 15:14:30.329: E/AndroidRuntime(4088):     at android.view.LayoutInflater.createView(LayoutInflater.java:518)
06-23 15:14:30.329: E/AndroidRuntime(4088):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:570)
06-23 15:14:30.329: E/AndroidRuntime(4088):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
06-23 15:14:30.329: E/AndroidRuntime(4088):     at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
06-23 15:14:30.329: E/AndroidRuntime(4088):     at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
06-23 15:14:30.329: E/AndroidRuntime(4088):     at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
06-23 15:14:30.329: E/AndroidRuntime(4088):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:209)
06-23 15:14:30.329: E/AndroidRuntime(4088):     at android.app.Activity.setContentView(Activity.java:1657)
06-23 15:14:30.329: E/AndroidRuntime(4088):     at SandS.Geo.Cal.StevesToolsMenu.onCreate(StevesToolsMenu.java:20)
06-23 15:14:30.329: E/AndroidRuntime(4088):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
06-23 15:14:30.329: E/AndroidRuntime(4088):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
06-23 15:14:30.329: E/AndroidRuntime(4088):     ... 11 more
06-23 15:14:30.329: E/AndroidRuntime(4088): Caused by: java.lang.reflect.InvocationTargetException
06-23 15:14:30.329: E/AndroidRuntime(4088):     at java.lang.reflect.Constructor.constructNative(Native Method)
06-23 15:14:30.329: E/AndroidRuntime(4088):     at java.lang.reflect.Constructor.newInstance(Constructor.java:415)
06-23 15:14:30.329: E/AndroidRuntime(4088):     at android.view.LayoutInflater.createView(LayoutInflater.java:505)
06-23 15:14:30.329: E/AndroidRuntime(4088):     ... 21 more
06-23 15:14:30.329: E/AndroidRuntime(4088): Caused by: java.lang.IllegalArgumentException: MapViews can only be created inside instances of MapActivity.
06-23 15:14:30.329: E/AndroidRuntime(4088):     at com.google.android.maps.MapView.<init>(MapView.java:291)
06-23 15:14:30.329: E/AndroidRuntime(4088):     at com.google.android.maps.MapView.<init>(MapView.java:264)
06-23 15:14:30.329: E/AndroidRuntime(4088):     at com.google.android.maps.MapView.<init>(MapView.java:247)
06-23 15:14:30.329: E/AndroidRuntime(4088):     ... 24 more

我们似乎已经用一个问题替换了另一个问题(或者更确切地说发现了第二个问题)。

无论您以哪种方式看待它,我仍然很难理解为什么一个类应该工作而另一个(以看似相同的方式设置)类却不能。

最佳答案

如何更改 AndroidManifest.xml 中的 Activity

旧的

<activity android:name="CreateLoc" ></activity>
<activity android:name="Menu" ></activity>

<activity android:name=".CreateLoc" ></activity>
<activity android:name=".Menu" ></activity>

关于java - 启动 list 中的类时出现 ActivityNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11141803/

相关文章:

java - 无需挂起即可更新 GUI

android - 如何从 'Unresolved reference: arch' 解决 "import android.arch.lifecycle"?

android - 如何将微调器数据从一项 Activity 传递到另一项 Activity ?

java - 打印结果 XSSFCell.setCellFormula()

java - java 中的preparedStatement 上的HP Fortify SQL 注入(inject)问题

android - 无法检测到 Android NDK 工具链

android - 如何检查 WiFi 连接是自动的还是在 android 中手动建立的?

java - 架构 arm64 的 undefined symbol : Failed to build RoboVM/LibGDX project

java - 用减号而不是括号格式化美元的负数(Java)

java - Android Studio - 视频应用程序崩溃 - Videoview 和 Mediaplayer - 无法播放录音