gpt4 book ai didi

android - 在库项目的 XML 文件中为 Intent 指定 targetPackage

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:02:28 27 4
gpt4 key购买 nike

我有一个库项目,我用它来构建两个应用程序,一个公共(public)应用程序和一个私有(private)应用程序供个人使用,还有一些对大多数人无用的设置。在这个库项目中,我定义了一个 PreferenceActivity(对于 API < Honeycomb)和一些 PreferenceFragments(对于 API >= Honeycomb),使用本指南的首选项 header :http://developer.android.com/guide/topics/ui/settings.html#BackCompatHeaders

为了支持旧设备,我按照指南中所示定义了这个 XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<Preference
android:title="@string/base_de_donnees"
android:summary="@string/summary_pref_restaurer_bdd_sd">
<intent
android:targetPackage="com.me.app_lib"
android:targetClass="com.me.app_lib.activities.preferences.SettingsActivity"
android:action="com.me.app_lib.activities.preferences.SettingsActivity.ACTION_PREF_BDD" />
</Preference>

<Preference
android:title="@string/saisie"
android:summary="@string/summary_pref_saisie">
<intent
android:targetPackage="com.me.app_lib"
android:targetClass="com.me.app_lib.activities.preferences.SettingsActivity"
android:action="com.me.app_lib.activities.preferences.SettingsActivity.ACTION_PREF_SASISIE" />

</Preference>
</PreferenceScreen>

其中com.me.app_lib是库项目的包,其中定义了SettingsActivity。但是,当从其中一个子项目调用 Intent 时,我遇到了崩溃,因为 targetPackage 与子项目的不匹配。如果我将 com.me.app_lib 更改为 com.me.app_public(其中一个子项目的包)它会起作用,但因为我有两个子项目,所以这不是一个选项。

我是否必须将此文件复制到每个子项目并仅更改 targetPackage 行,还是有更好的选择?

最佳答案

我最后所做的是将 com.me.app_lib 定义为资源字符串。 android:targetPackage 属性变为:

android:targetPackage="@string/package_activity_preferences"

然后我可以在两个子项目中为这个字符串定义一个不同的值。这不像我希望的那样干净,但至少我不需要在两个子项目中复制粘贴相同的文件。targetClass 是我的库项目的一部分,所以我不需要对它进行任何更改;只有 targetPackage 属性是个问题。

关于android - 在库项目的 XML 文件中为 Intent 指定 targetPackage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18924279/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com