如何从屏幕上删除Android偏好设置

hon*_*eal 14 android android-preferences

我正在尝试从屏幕中删除首选项,以便在用户使用大于2.2的SDK时不可见.我发现有几个答案说getPreferenceScreen().removePreference(thePreference)会起作用,但每次尝试都会返回FALSE.我在错误的地方使用它吗?我代码中的任何线索?

public class Preferences extends PreferenceActivity implements OnSharedPreferenceChangeListener {

private static final String POLLING_PREFERENCE = "update_frequency_list";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Load the preferences from an XML resource
    addPreferencesFromResource(R.xml.preferences);

    // Get a reference to the preferences
    mPollPref = getPreferenceScreen().findPreference(POLLING_PREFERENCE);

    //If the SDK is 2.2 or greater do not display polling preferences (using C2DM instead)
    if(Build.VERSION.SDK_INT > 7) {
        getPreferenceScreen().removePreference(mPollPref);
    }
}
....
}
Run Code Online (Sandbox Code Playgroud)

hon*_*eal 48

好吧,我的问题是我的偏好被分成了几个类别,当偏好被分类时,你不能像我们试图做的那样简单地".removePreference".我首先必须引用包含我想删除的首选项的类别,然后从该类别中删除该首选项,如此...

public class Preferences extends PreferenceActivity implements OnSharedPreferenceChangeListener {  

private static final String POLLING_PREFERENCE = "update_frequency_list";  

@Override  
protected void onCreate(Bundle savedInstanceState) {  
super.onCreate(savedInstanceState);  

// Load the preferences from an XML resource  
addPreferencesFromResource(R.xml.preferences);  

// Get a reference to the preferences  
mPollPref = getPreferenceScreen().findPreference(POLLING_PREFERENCE);  

//If the SDK is 2.2 or greater do not display polling preferences (using C2DM instead)  
if(Build.VERSION.SDK_INT > 7) {  
    PreferenceCategory notificationsCategory = (PreferenceCategory) findPreference("notifications_category");
    notificationsCategory.removePreference(mPollPref);
}  
}  
....  
}
Run Code Online (Sandbox Code Playgroud)

我认为这与使用相同的密钥具有多个首选项的能力有关(为了删除正确的密钥).无论如何,谢谢你弗拉基米尔坚持我.没有你,绝对不会找到答案.

  • 谢谢这为我解决了问题!从它的 PreferenceCategory 中删除首选项工作正常! (2认同)
  • 在我看到这个之前一直在挠头,难怪在我添加 PreferenceCategory 后一切都无法正常工作!他们应该在某处记录它.. (2认同)

小智 5

//remove all preferences
    mPollPref = getPreferenceScreen();
    mPollPref.removeAll();

//Change language
    setApplicationLanguage();

//and rebuild
    addPreferencesFromResource(R.xml.preferences);
Run Code Online (Sandbox Code Playgroud)