- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
应用程序的默认包是“example.app”。
目标 Activity 的包是“example.app.abc”。
在 java 代码中为“example.app.abc.TheActivity”调用 startActivity() 可以正常工作,
但在preference.xml 上指定它不起作用:
<PreferenceScreen android:key="key"
android:title="@string/title"
>
<intent android:action="android.intent.action.MAIN"
android:targetPackage="example.app.abc"
android:targetClass="TheActivity"
/>
</PreferenceScreen>
我尝试了 android:targetClass="example.app.abc.TheActivity"但它也不起作用。
是否可以优先启动非默认包的 Activity ?
最佳答案
我在尝试使用 custom preference screen 时遇到了同样的问题来自 AccountManager 帐户设置的库项目。无论我如何尝试调整 targetPackage 和 targetClass 属性,它都会引发异常(除了,因为它是一个帐户,它会使手机崩溃)。
我认为我们只需要假设这是 Android 的限制。这很笨拙,但您真正需要做的就是在应用程序的命名空间中为 Activity 声明一个包装类:
public class MyPreferences extends ActualPreferences {
}
在你的 AndroidManifest.xml 中声明它
<activity android:name=".MyPreferences"/>
然后你可以在你的 Intent 中指定类
<intent android:targetPackage="com.my.package"
android:targetClass="com.my.package.MyPreferences" />
顺便说一句,语法非常繁琐,至少对于帐户偏好而言。所有这些变体都失败了:
<!-- fails --> <intent android:targetClass="com.my.package.MyPreferences" />
<!-- fails --> <intent android:targetClass="MyPreferences"
android:targetPackage="com.my.package"/>
<!-- fails --> <intent android:targetClass=".MyPreferences"
android:targetPackage="com.my.package"/>
<!-- fails --> <intent android:targetClass="settings.MyPreferences"
android:targetPackage="com.my.package"/>
<!-- fails --> <intent android:targetClass=".settings.MyPreferences"
android:targetPackage="com.my.package"/>
<!-- fails --> <intent android:targetClass="com.my.other.package.MyPreferences"
android:targetPackage="com.my.package"/>
关键因素显然是 android:targetPackage
属性与应用程序包匹配。如果需要,可以将 Activity 放在子包中。这有效:
<intent android:targetPackage="com.my.package"
android:targetClass="com.my.package.settings.MyPreferences" />
关于android - PreferenceScreen 中不同包的 targetClass 时的 ActivityNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4360100/
我的应用程序中有一个标准的首选项页面。但是,当用户按下“管理收藏夹”时,我希望用户能够从这个首选项页面导航到另一个具有自定义布局的 PreferenceScreen。 这是我想到的自定义布局: 是否可
我正在以编程方式创建一组嵌套的 PreferenceScreen。当用户进入其中一个屏幕并点击其中的某个内容时,我想返回到之前的 PreferenceScreen(即“父级”)。 我找不到这方面的任何
我的应用以 API 28 为目标,并且至少有 API 15。作为支持库,我使用的是 AndroidX。 我有一个由 Activity 托管的偏好 fragment ,如下所示: SettingsFra
我遇到了以下(小但烦人!)问题:我有一个 PreferenceActivity,其 XML 偏好层次结构定义带有“sub PreferenceScreens”,即。 e.顶级 PreferenceSc
迁移到 AndroidX 并将目标 SDK 升级到 28 后,我的 SettingsPage 丢失了 PreferenceScreen 组件之间的分隔线,并且文本未左对齐。谁能帮忙? `
我是 Android 开发新手。我在我的 Android 应用程序中开发了一个首选项 Activity 。我想要一个 Preference 来打开一个常规的 Activity。我在我的 XML 文件中
PreferenceScreen 对我来说不够好,因为我必须向 Spinner 添加项目。这些项目需要来自数据列表。 我有一个自定义的 ArrayAdapter,它会在我单击它时返回项目的名称。它返回
我正在尝试构建一个测试,以使用 Espresso 验证我的 PreferenceScreen View 。我要单击的文本位于底部。那么如何使用 Espresso 在 PreferenceScreen
我从 the android documentation 得到以下代码 Android Studio 给我一个错误,说我在 PreferenceScreen 标签上缺少高度和
我创建了以下自定义首选项屏幕。 我想在 Button1 和 Button2 上添加监听器。我应该怎么做? 我正在使用以下代码创建上述首选项屏幕。 演示首选项: import android.app.A
我想去掉首选项 Activity 和所有子屏幕中的顶部标题栏。我现在面临的问题不是发生在果冻 bean 上,而是发生在旧版本上。如果我无法删除它,我想更改它的行为,以便子屏幕中的标题不会从列表项中转移
我有一个 xml 文件,它定义了一些偏好屏幕,如下例所示 .... 我希望能够增加首选项屏幕文本的字体大小,但是因为在首选项屏幕中没有 android:textsiz
我不知道如何在 PreferenceScreen 中实现向上按钮。向上按钮在您的应用程序图标旁边的操作栏中显示一个插入符号,允许您导航应用程序的层次结构,更多信息 here . 我有一个首选项 fra
我正在尝试创建一个 PreferenceScreen,但我希望 Activity 设计与整个项目一样。 如何创建自定义 PreferenceScreen 设计? 最佳答案 是的,这是可行的。为布局道歉
我的 PreferenceScreen 标题很长,尤其是在某些语言中。我可以为 CheckBoxPreference 或 ListPreference 设置多行标题: Android preferen
我在我的首选项屏幕上添加了一个小部件布局,显示一个箭头图标,以向用户表明在给定的 PreferenceScreen 后面还有更多首选项。 但是,我注意到当未启用 PreferenceScreen 时它
我有一个preferencescreen 页面只用于显示数据而不保存它用于设置 代码如下 现在我想知道如何
我正在运行时创建一个 PreferenceScreen。但是在尝试滚动时屏幕停电。 ListView有一个状态可以避免这种情况, android:cacheColorHint="@android:co
下面是首选项屏幕的截图: 我还包括布局和 java 代码: layout/toolbar.xml layout/activity_settings.xml xml/fragment
我找到了一种解决方法来实际启用嵌套 PreferenceScreen 上的 ActionBar 主页按钮...但是它不会在我的 PreferenceActivity 中调用 OnOptionsItem
我是一名优秀的程序员,十分优秀!