运行Android示例代码时无法实例化活动组件

5

我正在学习来自Android网站的教程

但是当我运行应用程序时,它提示无法实例化活动组件,有关ClassNotFoundException的内容。但是在manifest.xml文件中已注册MainActivity。我不知道问题出在哪里。这是完整的错误日志。

05-03 18:59:00.425: E/AndroidRuntime(20858): FATAL EXCEPTION: main
05-03 18:59:00.425: E/AndroidRuntime(20858): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.android.effectivenavigation/com.example.android.effectivenavigation.MainActivity}: java.lang.ClassNotFoundException: com.example.android.effectivenavigation.MainActivity
05-03 18:59:00.425: E/AndroidRuntime(20858):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1983)
05-03 18:59:00.425: E/AndroidRuntime(20858):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
05-03 18:59:00.425: E/AndroidRuntime(20858):    at android.app.ActivityThread.access$600(ActivityThread.java:130)
05-03 18:59:00.425: E/AndroidRuntime(20858):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
05-03 18:59:00.425: E/AndroidRuntime(20858):    at android.os.Handler.dispatchMessage(Handler.java:99)
05-03 18:59:00.425: E/AndroidRuntime(20858):    at android.os.Looper.loop(Looper.java:137)
05-03 18:59:00.425: E/AndroidRuntime(20858):    at android.app.ActivityThread.main(ActivityThread.java:4745)
05-03 18:59:00.425: E/AndroidRuntime(20858):    at java.lang.reflect.Method.invokeNative(Native Method)
05-03 18:59:00.425: E/AndroidRuntime(20858):    at java.lang.reflect.Method.invoke(Method.java:511)
05-03 18:59:00.425: E/AndroidRuntime(20858):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
05-03 18:59:00.425: E/AndroidRuntime(20858):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
05-03 18:59:00.425: E/AndroidRuntime(20858):    at dalvik.system.NativeStart.main(Native Method)
05-03 18:59:00.425: E/AndroidRuntime(20858): Caused by: java.lang.ClassNotFoundException: com.example.android.effectivenavigation.MainActivity
05-03 18:59:00.425: E/AndroidRuntime(20858):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
05-03 18:59:00.425: E/AndroidRuntime(20858):    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
05-03 18:59:00.425: E/AndroidRuntime(20858):    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
05-03 18:59:00.425: E/AndroidRuntime(20858):    at android.app.Instrumentation.newActivity(Instrumentation.java:1053)
05-03 18:59:00.425: E/AndroidRuntime(20858):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1974)
05-03 18:59:00.425: E/AndroidRuntime(20858):    ... 11 more

清单文件,即AndroidManifest.xml

<!--
  Copyright 2012 The Android Open Source Project

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
  -->

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

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

    <application android:label="@string/app_name"
        android:icon="@drawable/ic_launcher"
        android:theme="@android:style/Theme.Holo.Light.DarkActionBar">

        <activity android:name=".MainActivity" 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=".CollectionDemoActivity" android:label="@string/demo_collection" />

    </application>
</manifest>

你能发一下你的AndroidManifest.xml吗? - ianhanniballake
2个回答

10

如果我没有弄错,您正在使用 Android 支持库。您是如何将其添加到您的项目中的?如果您将其添加到了 Java Build Path 中,那么您可能会遇到这个异常。

建议您从构建路径中移除该 JAR 文件,然后右键单击您的项目并选择 Android 工具 --> 添加支持库


我尝试使用Add Support Library,但仍然无法工作。还有其他想法吗?我正在使用Android 2.3.3的Nexus One进行测试。 - vrunoa
我需要在清单文件的<application>部分中添加<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />。如果您的logcat输出中出现了要求确切添加此内容的错误,请按照此要求进行操作。 - Phil

0

很可能你的活动.xml文件未找到,或者名称与Android清单.xml文件中的名称不匹配。您可以发布您的代码以获得更好的答案。


这是你要启动的第二个活动吗?<activity android:name=".CollectionDemoActivity"> 请检查res/layouts/activity.xml文件名和Activity.java类名是否与上述匹配。如果仍然无法正常工作,请发布您的activity.xml代码和.java代码。 - user2347763
奇怪的问题,因为使用min-sdk“14”(如果您使用Eclipse创建了Android应用程序项目),即使使用GridLayout,也无需手动添加任何支持库!虽然很高兴知道您的问题已经解决! - user2347763

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接