启动活动别名的意向



我为具有不同元数据的活动设置了一些Alias。

在这个元数据中,我设置了片段的名称,然后通过反射加载
我不知道这是否是一个"干净"的解决方案,尽管通过使用Fragments并将功能放入其中,我有一个SuperActivity和两个Empty SubActivities,只是为了在清单中指定每一个。

现在的问题是:我可以通过Intent来启动别名吗?new Intent(Context, Class)不起作用,因为我找不到通过intent调用设置元数据的方法。

我需要通过<activity android:name="XXX"/>启动Intent,有简单的方法吗?

通用活动及其别名,我需要后者的新意图:

<activity
android:name="ActivityList"
android:label="@string/app_name"
android:launchMode="singleTop"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.app.default_searchable"
android:value="ActivityListItem" />
<meta-data
android:name="fragment"
android:value="FragmentLocationList" />
</activity>
<activity-alias
android:name="ActivityListItem"
android:label="@string/locations"
android:parentActivityName="ActivityList"
android:targetActivity="ActivityList" >
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
<meta-data
android:name="android.app.default_searchable"
android:value="ActivityListItem" />
<meta-data
android:name="fragment"
android:value="FragmentItemList" />
</activity-alias>

要指定别名,需要在空Intent()对象上使用setComponent(ComponentName)

我倾向于将清单条目设置为相对名称

<activity-alias
android:name=".ActivityListItem"

(注意名称开头的句点),然后使用为Intent形成ComponentName

Intent intent = new Intent();
String packageName = context.getPackageName();
ComponentName componentName = new ComponentName(packageName,
packageName + ".ActivityListItem");
intent.setComponent(componentName);

最新更新