Android 当PreferenceActivity启动时打开ListPreference
我想在没有PreferenceActivity的情况下打开ListPreference。但由于我使用ActionBar Sherlock,没有时间编写自定义ListView以作为ListPreferences使用,因此我决定使用此线程中的临时解决方案: 我有优先活动:Android 当PreferenceActivity启动时打开ListPreference,android,actionbarsherlock,preferenceactivity,listpreference,Android,Actionbarsherlock,Preferenceactivity,Listpreference,我想在没有PreferenceActivity的情况下打开ListPreference。但由于我使用ActionBar Sherlock,没有时间编写自定义ListView以作为ListPreferences使用,因此我决定使用此线程中的临时解决方案: 我有优先活动: public class PrefsActivity extends SherlockPreferenceActivity { @Override protected void onCreate(Bundle
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);
}
}
和prefs.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”键)会出现并正常工作。当我在列表打开时旋转手机时会出现问题。旋转后,将创建第二个列表。因此,当我从列表中选择一个项目并且列表消失时,第二个项目仍然存在(选择了原始项目)如何避免在旋转时创建第二个列表?不是最好但最简单的解决方案,添加
android:configChanges=“keyboardHidden | orientation”
到您的清单中的活动
<activity android:name="com.your.activity"
android:configChanges="keyboardHidden|orientation"/>
我找到了简单的解决方案,只需检查savedInstanceState
是否为空。如果是,请调用onItemClick
而不是“不是最好的”,这是最差的解决方案。@AppiDevo:然后告诉您哪一个是最好的解决方案