我设置了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>
答案 0 :(得分:3)
尝试使用setValueIndex()
代替setDefaultValue()
。
所以,如果你改变......
lp.setDefaultValue("2");
为...
lp.setValueIndex(int index); // pass the appropriate index
然后它应该工作。
<强>更新强>
我希望defaultvalue仅在用户没有做出任何选择时找到索引1!
为此,您可以先检查lp
是否为空,然后设置defaultvalue
...
if(lp.getValue() == null) {
lp.setValueIndex(1);
}