0

我想在沒有PreferenceActivity的情況下打開ListPreference。但是,當我使用的ActionBar福爾摩斯和沒有時間編寫自定義的ListView作爲ListPreferences我決定用此主題的治標不治本的工作: How to open or simulate a click on an android Preference, created with XML, programmatically?當PreferenceActivity啓動時打開ListPreference

我有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

相關問題