我试图制作一个简单的程序,如果我去点击我的应用程序中的按钮,会弹出一个要求输入浏览器的新活动。这是我一直在接受的例外情况:
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文件的图片。
答案 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)
答案 4 :(得分:-1)
您必须提供完整的包名称
<activity android:name="com.course.example.widgets.WebLookup"
android:label="@string/app_name"/>
否则它将无法检测您的班级转移意图。