我有一个包含多个软件包的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);
答案 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 文件,然后查看该特定文件的路径。
这对我非常有效!
仅供参考
答案 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 所以首先检查班级名称中的所有小写字母
谢谢:)