我的程序有一个选项卡列表,每个选项卡都包含一个人员列表。单击某人应编辑其详细信息,但单击某人会引发 ActivityNotFoundException。我启动编辑 Activity 的代码:
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>
发生什么事了?
最佳答案
有两种方法可以显式或隐式启动 Activity。显式表示直接使用类名;通常,如果您要调用自己的应用程序内的 Activity,则您打算使用显式方法,因为它要容易得多:
Intent intent = new Intent(context, EditActivity.class);
context.startActivity(intent);
但是,如果您确实打算使用隐式过滤,那么您的 Intent 过滤器就会丢失一些东西。每个隐式 Intent 过滤器都需要类别android.intent.category.DEFAULT
(除了少数异常(exception))。尝试一下,看看它是否有效:
<activity android:name="EditActivity">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<action android:name="my.package.EDIT" />
</intent-filter>
</activity>
建议阅读:intent filters .
关于java - 启动 Intent 找不到 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3166990/