0

Я хотел открыть 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") появляется и работает правильно. Проблема возникает, когда я поворачиваю телефон во время открытия списка. После вращения создается второй список. Поэтому, когда я выбираю элемент из списка, и список исчезает, второй все еще присутствует (с выбранным исходным элементом). Как избежать создания второго списка во время поворота?

ответ

1

Не самое лучшее, но самое простое решение, ADD

android:configChanges="keyboardHidden|orientation"

к вашей деятельности в манифесте ...

<activity android:name="com.your.activity" 
     android:configChanges="keyboardHidden|orientation"/> 
+0

Не «не самый лучший», это худшее решение. – AppiDevo

+0

@AppiDevo: тогда вы указываете, какое из них является лучшим решением – Namy

0

я нашел простое решение, просто проверить, если savedInstanceState нулевой. Если да, звоните onItemClick.