我有2個首選項 - 歌曲標題和我想要存儲在同一個鍵中的音頻狀態(靜音或音量)。這適用於點擊和唯一的問題是重置onSharedPreferencesChanged摘要我得到這個錯誤。使用android我希望使用相同的鍵有2個首選項
PreferenceScreen musicPrefScreen = (PreferenceScreen)getPreferenceScreen
().findPreference("theme" + Team_ID);
musicPrefScreen.setSummary(mPreferences.getString("theme" +
Team_ID, "CantGetTeam"));
ListPreference audiostatePref = (ListPreference)getPreferenceScreen()
.findPreference("theme" + Team_ID);
audiostatePref.setSummary(AudioState);
audiostatePref.setEntryValues(audiostates_values);
因爲findPreference的第二次調用返回第一個Pref。文檔說,你可以在第一個調用findPreference來獲得第二個,但他們是不同類型的首選項,我得到一個轉換錯誤。是否有另一種方法來查找ListPreference,以便我可以重置列表中的條目值?
編輯: 這裏是佈局
public PreferenceScreen createPreferenceHierarchy() {
PreferenceScreen prefScreenRoot = getPreferenceManager().createPreferenceScreen(this);
PreferenceCategory TeamCategory = new PreferenceCategory(this);
TeamCategory.setTitle("Team " + Team_ID + " Settings");
prefScreenRoot.addPreference(TeamCategory);
// set team name
EditTextPreference teamnamePref = new EditTextPreference(this);
teamnamePref.setTitle("Team Name");
teamnamePref.setKey("team" + Team_ID);
teamnamePref.setSummary(TheTeamName);
teamnamePref.setDialogTitle("Enter Name For Team " + Team_ID);
teamnamePref.setDefaultValue(TheTeamName);
teamnamePref.getEditText().setSingleLine(true);
TeamCategory.addPreference(teamnamePref);
// select theme music
PreferenceScreen musicPrefScreen = getPreferenceManager().createPreferenceScreen(this);
Intent musicIntent = new Intent(this, MusicDroid.class);
musicIntent.putExtra("team_id", Team_ID);
musicPrefScreen.setIntent(musicIntent);
musicPrefScreen.setKey("theme" + Team_ID);
musicPrefScreen.setTitle("Theme Music");
musicPrefScreen.setSummary(TheThemeName);
TeamCategory.addPreference(musicPrefScreen);
// select audio state
ListPreference audiostatePref = new ListPreference(this);
audiostatePref.setTitle("Audio State");
audiostatePref.setKey("theme" + Team_ID);
audiostatePref.setSummary(AudioState); //
audiostatePref.setEntries(audiostates);
audiostatePref.setEntryValues(audiostates_values);
TeamCategory.addPreference(audiostatePref);
return prefScreenRoot;
}
該行在Eclipse中沒有錯誤,但確切的一行將引發拋出錯誤。 java.lang.ClassCastException:android.preference.PreferenceScreen第一個pref是PreferenceScreen,它使用intent加載SD卡上的所有歌曲。第二個是一個簡單的ListPreference,它只返回默認,音樂或靜音三個狀態中的一個。 – 2010-07-15 13:14:38
發佈您的首選項屏幕布局。 – Pentium10 2010-07-15 13:24:43
好的,我做到了。我可以將一些首選項添加到SharedPrefs,並以不同的方式執行此操作。這只是代碼工作正常,我做的最後一件事是在onSharedPreferencesChanged中設置了摘要。我也需要在那裏更新setEntryValues。 – 2010-07-15 14:00:50