【问题标题】:The setDefaultValue for ListPreference don't work using dynamic entriesListPreference 的 setDefaultValue 不适用于动态条目
【发布时间】:2013-07-22 02:35:55
【问题描述】:

我已经设置了 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>

【问题讨论】:

    标签: android


    【解决方案1】:

    尝试使用setValueIndex() 而不是setDefaultValue()

    this question

    所以如果你改变...

    lp.setDefaultValue("2");
    

    到...

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

    那么它应该可以工作。

    已更新
    我希望只有在用户没有任何选择的情况下才定位索引 1!

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

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

    【讨论】:

    • 谢谢!但这不是我想要的。如果 lp.setValueIndex(1),应用程序总是定位到索引 1,我希望 defaultvalue 只有在用户没有做任何选择时才定位到索引 1!
    • 您可以先检查lp是否为null,然后设置默认值。请参阅我的更新答案。希望这会有所帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    • 2012-08-04
    • 2019-03-09
    • 2015-10-28
    • 1970-01-01
    相关资源
    最近更新 更多