我使用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的内容:
答案 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()与其他示例类别匹配。