我構建了一個首選項xml,我將其用作兩個不同活動頁面中的資源。在一個首選項頁面隱藏首選項按鈕
唯一的問題是我不希望LOGOUT按鈕顯示在這兩個頁面之一中(因爲用戶尚未連接)。
我現在所做的是:
logoutButton = (Preference)getPreferenceScreen().findPreference("logout");
logoutButton.setEnabled(false);
按鈕現在以灰色顯示出來..但有沒有辦法不讓它顯示在所有?
謝謝!
我構建了一個首選項xml,我將其用作兩個不同活動頁面中的資源。在一個首選項頁面隱藏首選項按鈕
唯一的問題是我不希望LOGOUT按鈕顯示在這兩個頁面之一中(因爲用戶尚未連接)。
我現在所做的是:
logoutButton = (Preference)getPreferenceScreen().findPreference("logout");
logoutButton.setEnabled(false);
按鈕現在以灰色顯示出來..但有沒有辦法不讓它顯示在所有?
謝謝!
如果註銷按鈕(偏好)是在PreferenceScreen,這樣做:
PreferenceScreen screen = getPreferenceScreen();
Preference logout = findPreference("logout");
screen.removePreference(logout);
不然,如果你的註銷按鈕(偏好)是在PreferenceCategory(這是一個PreferenceScreen內),這樣做:
PreferenceCategory category = (PreferenceCategory) findPreference("category_name");
Preference logout = findPrefence("logout");
category.removePreference(logout);
這對我來說很好,我有一個任務顯示偏好或不在類別取決於系統區域設置。來自@ mik3y的解決方案不起作用,因爲首選項不在層次結構的根目錄中,而是在PreferenceCategory中。這是該類別中的最後一個首選項,所以我不需要擔心動態添加/刪除它時的順序。 – CrazyCoder
很高興我可以幫助:) – Carnal
對不起,延遲答覆(忙幾天),但感謝您的優秀解決方案很好! –
與視圖不同,首選項沒有setVisibility方法。相反,嘗試使用PreferenceScreen#removePreference:
PreferenceScreen preferenceScreen = getPreferenceScreen();
logoutButton = (Preference) preferenceScreen.findPreference("logout");
preferenceScreen.removePreference(logoutButton);
您可能需要保留在你的活動logoutButton參考,如果你以後想重新添加。
嗯,不工作,但感謝您的幫助! –
把一些條件和將其添加到onCreate方法例如
if(something){
CheckBoxPreference lp=new CheckBoxPreference(this);
lp.setKey("checkbox");
lp.setTitle("logout");
lp.setEnabled(true);
getPreferenceScreen().addPreference(lp);
}
如果我把真實的東西放在了偏好上,否則它不會。不要把它放在代碼中的xml中
你有喜歡的類別內嗎? – Carnal
我的解決方案有效嗎?這應該。 – Carnal