Android错误“无法找到显式活动类”

时间:2011-11-12 21:47:49

标签: android android-activity android-manifest

我有一个包含多个软件包的android项目。在这种情况下,包的结构是com.WAPP.SetLocation是包含我想要运行的活动的包。

在我的清单中,com.WAPP被认为是基础包:

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

我的活动在我的清单中声明为:

<activity android:name=".mainScreenActivity"></activity>
<activity android:name=".SetLocation.setLocationActivity"></activity>

mainScreen活动显示正常,因为它位于com.WAPP包中。但是当我尝试运行setLocationActivity时,我无法找到显式的类错误。以下是我的意图参数:

Intent i = new Intent();
            i.setClassName("com.WAPP.SetLocation",
                           "com.WAPP.SetLocation.setLocationActivity");
            startActivity(i);

11 个答案:

答案 0 :(得分:25)

第一个参数是应用程序包,而不是活动所在的包。

您可以像这样调用Activity。

Intent i = new Intent();
i.setClassName("com.WAPP",
               "com.WAPP.SetLocation.setLocationActivity");
startActivity(i);

首选SYLARRR建议安卓自动为您解决问题。因此呼叫为..

startActivity(new Intent(this, setLocationActivity.class));

建议每个java标准将包名称全部设置为低级,类名称为CamelCased。

答案 1 :(得分:12)

如果新活动不在与MainActivity相同的数据包中(您从此处调用?),请尝试在清单上声明

<activity android:name="com.WAPP.SetLocation.setLocationActivity"></activity>

并且在来电者中

Intent intent = new Intent(this, setLocationActivity.class);
startActivity(intent);

希望这有帮助!

答案 2 :(得分:11)

除了上述答案之外,请确保您的活动在清单

中的申请中声明
<application
    android:allowBackup="true"
    android:label="@string/app_name"
    android:supportsRtl="true">

    <activity android:name=".mainScreenActivity"></activity>
    <activity android:name=".SetLocation.setLocationActivity"></activity>

</application>

答案 3 :(得分:2)

如果我没记错的话,i.setClassName("com.WAPP.SetLocation","com.WAPP.SetLocation.setLocationActivity");应为i.setClassName(getBaseContext(),"setLocationActivity"); Reference

也请尝试以下语法:

startActivity(new Intent(MyActivity.this, setLocationActivity.class));

并尝试从以下位置删除起始点:

<activity android:name=".SetLocation.setLocationActivity"></activity>

答案 4 :(得分:2)

通过这种方式做到:

Intent intent = new Intent();
intent.setComponent(
        new ComponentName("com.WAPP", "com.WAPP.SetLocation.setLocationActivity"));
startActivity(i);

答案 5 :(得分:1)

首先,请确保您已创建活动而不是课程。而且,如果这是活动,请转到 manifest.xml 文件,然后查看该特定文件的路径

这对我非常有效!

https://forums.xamarin.com/discussion/104102/android-content-activitynotfoundexception-unable-to-find-explicit-activity-class

仅供参考

答案 6 :(得分:0)

在您的清单中,您将其声明为 .SetLoction.setLocationActivity 但 包名称是com.WAPP.SetLocation 所以你需要再次加上前缀。

Intent i = new Intent();
            i.setClassName("com.WAPP.SetLocation",
                           "com.WAPP.SetLocation.SetLocation.setLocationActivity");
            startActivity(i);

答案 7 :(得分:0)

在Xamarin Android中,确保您的Activity类具有Activity属性

[Activity(Theme = "@style/MyTheme")]
public class MyActivity : ActivityBase
{
...
}

以此确保您的活动已在AndroidManifest.xml中注册

答案 8 :(得分:0)

我在项目中遇到了同样的问题。这几乎浪费了我一整天。我尝试了上面提到的所有解决方案,但是没有一个解决方案对我有用。 经过所有的辛苦工作,我只是“重建”项目并“清理”项目,并且它运行良好。 注意:  在执行所有过程之前,您只需要尝试这些选项。

答案 9 :(得分:0)

这可能是由于未在清单中注册您的下一个活动XML文件。在AndroidManifest.xml文件中注册您的下一个活动XML文件

<activity android:name=".NextActivity" />

希望有帮助。

答案 10 :(得分:0)

如果使用ImageView,可能会出现问题:(

Intent intent = new Intent(context,ImageView.class);
                        intent.putExtra("imageurl",clients_document_return.getUrl());
                        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                        v.getContext().startActivity(intent);

,您的班级名称可能是Imageview.class 所以首先检查班级名称中的所有小写字母

谢谢:)