当前位置: 首页 > 面试题库 >

启动活动别名的意图

姜玉泽
2023-03-14
问题内容

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

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

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

我需要通过来启动Intent <activity android:name="XXX"/>,有没有简单的方法可以做到这一点?

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

    <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>

问题答案:

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

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

<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);


 类似资料:
  • 我已将要首先运行的活动从更改为另一个活动。我通过编辑Android清单并复制: 去我想要的活动。现在,当我运行或调试我的应用程序在我的android设备上成功安装,但它不会自动启动像之前我必须点击图标,我得到下面的错误,如果我运行它在模拟器正确的活动启动只在第一次安装后,它只是忽略该活动,并且总是启动。 请帮忙。 我的全部清单:

  • 我有MainActivity上有一个片段,当用户点击片段时,用户会导航到另一个片段,在最后一个片段上有一个按钮来启动谷歌地图导航,这是代码: 问题是,在地图启动后,我希望用户在按下back时返回到我的应用程序,而不是Launcher。 有没有办法做到这一点。 这是我的完整代码: 主体活动 原木

  • 我正在开发一个连接到平板电脑时与USB设备通信的应用程序。为了避免用户接受android访问设备,我设置了一个意图过滤器: 我的问题是,有了这个意图过滤器,每次我插入设备并启动另一个活动时都会调用“onCreate”方法,如果没有意图过滤器,它只会被调用一次。这是“onCreate”方法: 广播接收机: 简单连接到设备的“setDevice”方法: 为什么?

  • 我尝试了以下方法: 但它似乎不起作用我尝试将它命名为drawables.xml和mipmaps.xml,似乎它总是试图从drawable而不是mipmap文件夹引用它?

  • 我有一个定义为singleTop的活动,因此只有一个实例存在。 我用一些数据设置了一个通知意图,并将其包含在Pending帐篷中,然后将其发送给通知管理器。 如果activivty未运行,则意图会按预期通过onCreate()启动活动。 如果活动正在运行,但处于停止状态/不在前台(如单击home按钮时),并且通知被单击,则按预期调用我的活动的onNewIntent()。 但是,如果活动在前台时已被

  • 我有一个活动,可以在收藏夹列表中添加书签。每个宠儿都有一个按钮。当我点击那个按钮时,我必须进入那个特定的活动。但它显示了一个错误。应用程序不会崩溃,但书签活动不会从单击开始。 以下是“收藏夹”活动的代码: 错误是onClick方法,具体如下: 它给我一个ClassNotFoundExc0019。 似乎有了这段代码,我就可以启动这个包中的活动了。但问题是,我想开始的活动在另一个包中。logcat说它