私は、preference.xml ファイルを持っており、このファイルのエントリの一部を表示または非表示にしたいと考えています。しかし問題は、設定が非表示になっていないことです。私のコードは次のとおりです。
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
Preference customPref = (Preference) findPreference(getText(R.string.about));
customPref.setOnPreferenceClickListener(this);
Preference termAndConditions = (Preference) findPreference(getText(R.string.term_and_conditions));
termAndConditions.setOnPreferenceClickListener(this);
Preference privacyStatement = (Preference) findPreference(getText(R.string.privacy_statement));
privacyStatement.setOnPreferenceClickListener(this);
Preference login_with_facebook = (Preference) findPreference(getText(R.string.login_with_facebook));
login_with_facebook.setOnPreferenceClickListener(this);
Preference register_new_account = (Preference) findPreference(getText(R.string.register_new_account));
register_new_account.setOnPreferenceClickListener(this);
Preference login = (Preference) findPreference(getText(R.string.login));
login.setOnPreferenceClickListener(this);
Preference my = (Preference) findPreference(getText(R.string.my));
my.setOnPreferenceClickListener(this);
Preference miles_and_more = (Preference) findPreference(getText(R.string.miles_and_more));
miles_and_more.setOnPreferenceClickListener(this);
Preference voucher_booking = (Preference) findPreference(getText(R.string.voucher_booking));
voucher_booking.setOnPreferenceClickListener(this);
Preference invite_friends = (Preference) findPreference(getText(R.string.invite_friends));
invite_friends.setOnPreferenceClickListener(this);
}
onResume{
buildLogin()
}
private void buildLogin() {
PreferenceScreen preferenceScreen = getPreferenceScreen();
hidePreferences(preferenceScreen, R.string.my);
hidePreferences(preferenceScreen, R.string.miles_and_more);
hidePreferences(preferenceScreen, R.string.voucher_booking);
hidePreferences(preferenceScreen, R.string.invite_friends);
}
private void hidePreferences(PreferenceScreen preferenceScreen,
int preferenceKey) {
Preference customPref = (Preference) findPreference(getText(preferenceKey));
preferenceScreen.removePreference(customPref);
}
アイデアは、onResume() の設定の一部を非表示にすることです。このクラスは PreferenceFragment から拡張されています。誰かが私が間違っていることを指摘してください。非表示になっている設定はありません。