Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓错误“;找不到显式活动类“;_Android_Android Activity_Android Manifest - Fatal编程技术网

Android 安卓错误“;找不到显式活动类“;

Android 安卓错误“;找不到显式活动类“;,android,android-activity,android-manifest,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">

我有一个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">

如果我没有弄错的话,
i.setClassName(“com.WAPP.SetLocation”、“com.WAPP.SetLocation.setLocationActivity”)
应该是
i.setClassName(getBaseContext(),“setLocationActivity”)

还可以尝试以下语法:

startActivity(new Intent(MyActivity.this, setLocationActivity.class));
并尝试从以下位置删除起始点:

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

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

您可以这样调用活动

Intent i = new Intent();
i.setClassName("com.WAPP",
               "com.WAPP.SetLocation.setLocationActivity");
startActivity(i);
正如Sylarr建议的那样,最好让Android自动为您解决这个问题。因此被称为

startActivity(new Intent(this, setLocationActivity.class));
根据java标准,建议将包名全部小写,并将类名设置为CamelCased。

通过以下方式执行:

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

如果新活动与MainActivity不在同一个数据包中(您从这里调用?),请尝试在清单上声明

<activity android:name="com.WAPP.SetLocation.setLocationActivity"></activity>
<application
    android:allowBackup="true"
    android:label="@string/app_name"
    android:supportsRtl="true">

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

</application>

希望这有帮助

除了上述答案之外,还要确保在清单中的应用程序中声明您的活动

<activity android:name="com.WAPP.SetLocation.setLocationActivity"></activity>
<application
    android:allowBackup="true"
    android:label="@string/app_name"
    android:supportsRtl="true">

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

</application>

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

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

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

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

这样,您就可以确保您的活动已在AndroidManifest.xml中注册了。我在项目中遇到了同样的问题。这几乎浪费了我一整天的时间。我尝试了上面提到的所有解决方案,但没有一个对我有效。 经过所有的艰苦工作,我只是“重建”项目和“清理”项目,它工作得很好。 注:
在完成所有过程之前,您只需要尝试一下这些选项。

这可能是因为没有在清单中注册下一个活动XML文件。在AndroidManifest.XML文件中注册下一个活动XML文件


希望有帮助。

首先,确保您创建了活动,而不是类。如果是活动,则转到manifest.xml文件,查看该特定文件的路径

这对我来说绝对有效


这是供参考的

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

您的类名可能是Imageview.class 所以首先检查类名中的所有小资本


谢谢:)

这就是我遇到的问题。当时正在进行黑客竞赛并复制了大量文件,因此Android Studio从未有机会了解这项新活动。
[Activity(Theme = "@style/MyTheme")]
public class MyActivity : ActivityBase
{
...
}
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);