我使用显式Intent将一个活动转到另一个活动,并在清单文件中声明它。
<activity
android:name=".Activity2"
android:label="Activity 2">
<intent-filter
action android:name="com.tr.ACTIVITY2"
category android:name=”android.intent.category.DEFAULT">
</intent-filter>
</activity>
它工作正常,但有一本书使用intent-filter
,我对使用意图过滤器时感到困惑。
答案 0 :(得分:12)
当您使用明确的意图时,就像您告诉Android“打开Activity2”。
当您使用隐式意图时,您会告诉Android:“打开一个可以执行这些事情的活动”。 这些东西实际上是您在Activity2的清单中编写的过滤器。
例如,如果您在Activity1中并想要启动Activity2:
你可以明确:
Intent intent = new Intent(Activity1.this, Activity2.class);
startActivity(intent);
或暗示:
Intent intent = new Intent();
intent.addAction("myAction");
intent.addCategory("myCategory");
startActivity(intent);
在这种情况下,您应该在清单文件中包含以下内容:
<activity android:name=".Activity2">
<intent-filter>
<action android:name="myAction"/>
<category android:name="myCategory"/>
</intent-filter>
</activity>