1

我有一个项目有两个包first.packsecond.pack,有两个不同的活动。我正在尝试使用该代码从第一个活动开始第二个活动

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?

我哪里错了?

4

3 回答 3

1

确保在 AndroidManifest.xml 文件中已经像这样定义了活动:

<activity
      android:name="second.pack.SecondActivity"
      android:label="@string/yor_title"/>
于 2013-01-16T23:45:24.733 回答
0

你有一个项目有 2 个包,但是项目中有多少个应用程序?假设只有一个应用程序。ComponentName的第一个参数是应用程序的包名,与你要调用的activity的包名无关。

因此,如果您只有一个应用程序的包是“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”)。

于 2017-01-05T05:54:21.670 回答
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;
}
于 2017-02-15T15:13:48.263 回答