我的程序有一个标签列表,每个标签都包含一个人员列表。单击某个人应该编辑他们的详细信息,但是,单击某个人会抛出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>
发生了什么事?
答案 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(...);