Android Manifest中无法识别活动

时间:2016-02-26 06:19:07

标签: java android xml

我试图制作一个简单的程序,如果我去点击我的应用程序中的按钮,会弹出一个要求输入浏览器的新活动。这是我一直在接受的例外情况:

02-26 04:38:11.900 1937-1937/? E/AndroidRuntime: FATAL EXCEPTION: main
    android.content.ActivityNotFoundException: Unable to find explicit activity class
        {com.course.example.widgets/com.course.example.widgets.WebLookup};
    have you declared this activity in your AndroidManifest.xml?
        at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1618)
        at android.app.Instrumentation.execStartActivity(Instrumentation.java:1417)
        at android.app.Activity.startActivityForResult(Activity.java:3370)
        at android.app.Activity.startActivityForResult(Activity.java:3331)
        at android.app.Activity.startActivity(Activity.java:3566)
        at android.app.Activity.startActivity(Activity.java:3534)
        at com.course.example.widgets.Widgets.onClick(Widgets.java:139)
        at android.view.View.performClick(View.java:4204)
        at android.view.View$PerformClick.run(View.java:17355)
        at android.os.Handler.handleCallback(Handler.java:725)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5041)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
        at dalvik.system.NativeStart.main(Native Method)

这是我的清单xml:

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

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".Widgets"
                  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="com.course.example.widgets.WebLookup"
                    android:label="@string/app_name"/>
    </application>
    <uses-sdk android:minSdkVersion="17" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
</manifest> 

这是实际启动活动的代码:

case R.id.webButton:{
    Intent webLookup = new Intent(this, WebLookup.class);
    startActivity(webLookup);
    break;

它位于一个用于确定其他3个按钮操作的开关块中,但我并不认为它是相关的。

这是左边的导航器中的XML文件和我的两个Java文件的图片。

enter image description here

5 个答案:

答案 0 :(得分:1)

将此活动声明为AndroidMenifest ,您的错误可能在活动名称之前未写入包名称

<activity
            android:name=".WebLookup" //write package name before activity name
            android:configChanges="orientation" //optional
            android:screenOrientation="portrait" //optional
            android:windowSoftInputMode="adjustResize" /> //optional

答案 1 :(得分:1)

如果要手动添加此活动类,请验证该类是否设置为public。这样,AndroidManifest.xml应该自动将您的活动类显示为可能的选项。

public MyActivityClass extends AppCompatActivity{
...
}

答案 2 :(得分:0)

使用

<activity android:name="com.course.example.widgets.WebLookup"
                    android:label="@string/app_name"/>

活动的全名在实践中更加舒适。

com.course.example.widgets.WebLookup表示Activity类文件的完整路径。

答案 3 :(得分:0)

如果您没有将包路径包括在类的顶部,则您将无法在清单中引用它,例如 enter image description here

答案 4 :(得分:-1)

您必须提供完整的包名称

<activity android:name="com.course.example.widgets.WebLookup"
                    android:label="@string/app_name"/>

否则它将无法检测您的班级转移意图。