ListPreference的setDefaultValue不能使用动态条目

时间:2013-07-22 02:35:56

标签: android

我设置了lp.setDefaultValue(“2”),但是当我运行应用程序时,我发现未选择第2项,为什么?谢谢!

public class PhotoPreference extends PreferenceActivity{
     @Override
     protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            addPreferencesFromResource(R.xml.mypreference);

            setContentView(R.layout.photo_preference);

            // Look up the AdView as a resource and load a request.
            AdView adView = (AdView)this.findViewById(R.id.adViewpreference);
            adView.loadAd(new AdRequest());

            ListPreference lp = (ListPreference)findPreference("SetLastFolder");            
            CharSequence[] entries = { "One", "Two", "Three" };
            CharSequence[] entryValues = { "1", "2", "3" };

            lp.setEntries(entries);
            lp.setEntryValues(entryValues);

            lp.setDefaultValue("2");      


     }

}



<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
    android:key="AppPreference"
    android:summary="@string/Preferencesummary"
    android:title="@string/Preference" >   

    <ListPreference    
        android:key="SetLastFolder"
        android:dialogTitle="@string/SelectGallery"
        android:title="@string/SelectGallery"
        android:summary="@string/SelectGallerysummary"        
        android:layout="@layout/photopreference_layout" 
     />

</PreferenceScreen>

1 个答案:

答案 0 :(得分:3)

尝试使用setValueIndex()代替setDefaultValue()

请参阅this question

所以,如果你改变......

lp.setDefaultValue("2");

为...

lp.setValueIndex(int index); // pass the appropriate index

然后它应该工作。

<强>更新
我希望defaultvalue仅在用户没有做出任何选择时找到索引1!

为此,您可以先检查lp是否为空,然后设置defaultvalue ...

if(lp.getValue() == null) {
   lp.setValueIndex(1);
}