原因分析
需要移除一个Preference,很简单的操作,但是放在其他地方不生效,所以重写的onCreate方法来进行移除即可。
解决方案
- 找到相关的PreferenceKey,remove掉即可
private static final String KEY_CHANGE_CARRIER = "change_carrier_settings";
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
boolean isPrepaid = SystemProperties.get("ro.xxx.xxx").equals("true") ? true : false;
if (!isPrepaid) {
Log.d(TAG, "removePreference ");
removePreferenceFromScreen(KEY_CHANGE_CARRIER);
}
}
/**
* Removes the specified preference, if it exists.
* @param key the key for the Preference item
*/
private void removePreferenceFromScreen(String key) {
final Preference preference = findPreference(key);
if (preference != null) {
getPreferenceScreen().removePreference(preference);
}
}