启动Intent无法找到Activity

时间:2010-07-02 15:17:12

标签: java android android-activity

我的程序有一个标签列表,每个标签都包含一个人员列表。单击某个人应该编辑他们的详细信息,但是,单击某个人会抛出ActivityNotFoundException。我的代码启动编辑活动:

Intent intent = new Intent("my.package.EDIT");                // Person is both
intent.putExtra("my.package.PERSON", (Parcelable) myPerson);  // Parcelable and
GroupArrayAdapter.this.getContext().startActivity(intent);    // Serializable

AndroidManifest.xml的相关部分:

<activity android:name="EditActivity">
  <intent-filter>
    <action android:name="my.package.EDIT" />
  </intent-filter>
</activity>

发生了什么事?

2 个答案:

答案 0 :(得分:2)

有两种方法可以显式或隐式地启动Activity。明确表示您直接使用类名;通常,如果您正在调用自己应用程序中的Activity,那么您要使用的是显式方法,因为它更容易:

Intent intent = new Intent(context, EditActivity.class);
context.startActivity(intent);

但是,如果你真的打算使用隐式过滤,那么你的意图过滤器会遗漏一些东西。每个隐式意图过滤器都需要类别android.intent.category.DEFAULT(少数例外)。试试这个,看它是否有效:

<activity android:name="EditActivity">
  <intent-filter>
    <category android:name="android.intent.category.DEFAULT" />
    <action android:name="my.package.EDIT" />
  </intent-filter>
</activity>

建议阅读:intent filters

答案 1 :(得分:0)

实例化适配器时,从调用活动传递上下文。然后在您的适配器中使用context.startActivity(...);