2

我使用 eclipse 创建了一个设置活动。设置活动自动创建两个示例类别(除了常规设置):通知和数据与同步。问题是我根本不知道如何在不使我的应用程序崩溃的情况下删除它们:

我尝试简单地删除此块(我将其转换为评论)但应用程序崩溃了:

    // Add 'notifications' preferences, and a corresponding header.
    fakeHeader = new PreferenceCategory(this);
    fakeHeader.setTitle(R.string.pref_header_notifications);
    getPreferenceScreen().addPreference(fakeHeader);
    addPreferencesFromResource(R.xml.pref_notification);

我不能从空白活动开始,因为这是我的第一个应用程序,所以我更愿意从示例设置活动开始。

如何删除“通知”首选项,以便我只有常规设置和数据和同步?

这是 logcat 崩溃时的内容: 在此处输入图像描述

4

4 回答 4

1

从你的小例子很难说。eclipse 崩溃时会说什么(切换到 DDMS 或 DEBUG 视图并查看 logcat 输出)

如果您刚刚开始,我建议您使用向导来创建第一个应用程序,而不是更改现有示例。

于 2013-01-05T23:22:52.453 回答
0

试试这个,看看这是否会消除偏好:

myPreferenceScreen.remove(notifications);
于 2013-01-05T23:29:33.043 回答
0

我一直在努力做同样的事情,我想我终于找到了该怎么做。首先,确保不要删除 fakeHeader 的声明。然后注释以下行:

fakeHeader.setTitle(R.string.pref_header_notifications);
getPreferenceScreen().addPreference(fakeHeader);
addPreferencesFromResource(R.xml.pref_notification);

如果您不执行任何操作,您将遇到空指针异常。原因很简单,您会在下面的某些行中找到“setupSimplePreferenceScreen”方法。它确保用户更改的值会相应更新。要使其正常工作,您还必须注释该行:

bindPreferenceSummaryToValue(findPreference("notifications_new_message_ringtone"));

但请注意,这只会使设置屏幕在非 XL 大屏幕上工作!这是因为代码使用两种不同的方法来呈现设置。最简单的是没有片段的,它使用“setupSimplePreferencesScreen”中已弃用的方法。不幸的是,即使在带有 XL 屏幕的设备上运行未修改的 settingsActivity,也会导致我立即崩溃。所以你必须自己弄清楚:)

编辑: gian1200 在他对这个答案的评论中指出了为了让它工作的步骤。

顺便说一句,要添加自定义设置,请查看以下文件(我假设您没有重命名文件)

1:

/res/values/strings_activity_settings.xml

包含设置的名称和描述

2:

/res/xml/pref_data_sync.xml
/res/xml/pref_general.xml
/res/xml/pref_headers.xml
/res/xml/pref_notification.xml

这些文件包含设置类别 (pref_headers.xml) 的标题名称以及类别内容。您可以轻松添加新类别或修改现有类别。我认为最好和他们一起玩一下。你会很容易掌握它的窍门。

于 2013-01-06T11:04:10.683 回答
0

你必须删除

bindPreferenceSummaryToValue(findPreference("notifications_new_message_ringtone"));

如果要删除通知部分。还有一些其他的 bindPreferenceSummaryToValue() 与其他示例类别相匹配。

于 2013-06-20T00:03:10.270 回答