我有一个包含两个包 first.pack 和 second.pack 的项目,有两个不同的Activity。我正在尝试使用该代码从第一个Activity开始第二个Activity
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setComponent(new ComponentName("second.pack", "second.pack.SecondActivity"));
startActivity(intent);
奇怪的是,这段代码已经工作了一段时间,但在我取消并重新安装应用程序之后,它开始向我返回以下错误:
Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {second.pack/second.pack.SecondActivity}; have you declared this activity in your AndroidManifest.xml?
我哪里错了?
答案 0 :(得分:1)
在AndroidManifest.xml文件中确保活动已经定义如下:
<activity
android:name="second.pack.SecondActivity"
android:label="@string/yor_title"/>
答案 1 :(得分:0)
您有一个包含2个包的项目,但项目中有多少个应用程序?我们假设只有一个应用程序。 ComponentName的第一个参数是应用程序的包名称,不考虑要调用的活动的包名称。
因此,如果您只有一个应用程序的程序包为“first.pack”,您想从中调用程序包“second.pack”的活动,那么正确的调用是:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setComponent(new ComponentName("first.pack", "second.pack.SecondActivity"));
startActivity(intent);
它停止工作的一个可能原因可能是您更改了应用程序的包(例如从“second.pack”更改为“first.pack”)。
答案 2 :(得分:0)
如果应用程序中有不同的包,请先执行以下操作:
<activity android:name=".Kunal.Android" />
在manifest.xml中声明该活动。
Intent intent = new Intent(MainActivity.this,Second package name.class );
以下是我的代码:
switch (position) {
case 0:
Intent newActivity = new Intent(MainActivity.this,com.example.owner.listview_1.Kunal.Android.class);
startActivity(newActivity);
break;
case 1:
Intent newActivity1 = new Intent(MainActivity.this, com.example.owner.listview_1.Kunal.Iphone.class);
startActivity(newActivity1);
break;
case 2:
Intent newActivity2 = new Intent(MainActivity.this,com.example.owner.listview_1.Kunal.Window.class);
startActivity(newActivity2);
break;
}