Я хотел открыть ListPreference без PreferenceActivity. Но, как я использую ActionBar Шерлок и не имею времени, чтобы написать пользовательский элемент управления ListView работать ListPreferences я решил использовать временное решение этой темы: How to open or simulate a click on an android Preference, created with XML, programmatically?Открытие ListPreference при запуске PreferenceActivity
У меня есть PreferenceActivity:
public class PrefsActivity extends SherlockPreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.prefs);
PreferenceScreen preferenceScreen = getPreferenceScreen();
int pos = findPreference("timeZone").getOrder();
preferenceScreen.onItemClick(null, null, pos, 0);
}
}
И префы. XML:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:key="mainPreferences" >
<ListPreference
android:defaultValue="Default"
android:entries="@array/prefs_time_zones_names"
android:entryValues="@array/prefs_time_zones_values"
android:key="timeZone"
android:summary="@string/prefs_time_zones_summary"
android:title="@string/prefs_time_zones_title" />
(...)
(...)
</PreferenceScreen>
Когда я начинаю PrefsActivity, мой ListPreference (с ключом "TimeZone") появляется и работает правильно. Проблема возникает, когда я поворачиваю телефон во время открытия списка. После вращения создается второй список. Поэтому, когда я выбираю элемент из списка, и список исчезает, второй все еще присутствует (с выбранным исходным элементом). Как избежать создания второго списка во время поворота?
Не «не самый лучший», это худшее решение. – AppiDevo
@AppiDevo: тогда вы указываете, какое из них является лучшим решением – Namy