Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 当PreferenceActivity启动时打开ListPreference_Android_Actionbarsherlock_Preferenceactivity_Listpreference - Fatal编程技术网

Android 当PreferenceActivity启动时打开ListPreference

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

我想在没有PreferenceActivity的情况下打开ListPreference。但由于我使用ActionBar Sherlock,没有时间编写自定义ListView以作为ListPreferences使用,因此我决定使用此线程中的临时解决方案:

我有优先活动:

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:然后告诉您哪一个是最好的解决方案