Android从SettingsActivity中移除类别而不会崩溃应用程序?

时间:2013-01-05 23:16:33

标签: java android eclipse

我使用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的内容: enter image description here

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

尝试这一点,看看是否删除了偏好:

myPreferenceScreen.remove(notifications);

答案 2 :(得分: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)的标题名称以及类别内容。您可以轻松添加新类别或修改现有类别。我认为最好是和他们一起玩一下。你很容易掌握它。

答案 3 :(得分:0)

你必须删除

bindPreferenceSummaryToValue(findPreference("notifications_new_message_ringtone"));

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