我有一个库项目,我用它来构建两个应用程序,一个公共的和一个私人用于个人使用,几乎没有设置对大多数人没用.在这个库项目中,我定义了一个PreferenceActivity(用于API< Honeycomb)和一些PreferenceFragments(用于API> = Honeycomb),使用本指南的首选项标题: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全部内容,希望文章能够帮你解决android – 为库项目的XML文件中的intent指定targetPackage所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)