oza*_*apa 5 android xamarin android-multiselectlistpreference
我在动态设置 MultiSelectListPreference 时遇到问题(对于 Android 来说,任何动态都是绝对神秘的,但那是另一个故事了)
我无法仅在代码中设置完整的preferenceActivity,因此我必须编写preferences.xml 并修改代码中的控件。
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceCategory android:key="prefCat" android:title="CatTitle">
<MultiSelectListPreference
android:key="multiPref"
android:title="Title"
android:dialogTitle="DialogTitle"
android:summary="Summary"/>
<ListPreference android:key="listPrefOne"...></ListPreference>
<ListPreference android:key="listPrefTwo"...></ListPreference>
</PreferenceCategory>
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)
这是应用程序设置代码
public class AppSettings : Activity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.AppSettings);
var prefsFragment = new MyPreferenceFragment();
var fragmentTransaction = FragmentManager.BeginTransaction();
fragmentTransaction.Replace(Resource.Id.content, prefsFragment);
fragmentTransaction.Commit();
}
}
Run Code Online (Sandbox Code Playgroud)
...和 PreferenceFragment
public class MyPreferenceFragment : PreferenceFragment
{
public override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
AddPreferencesFromResource(Resource.Xml.preferences);
var multiPref = FindPreference("multiPref") as MultiSelectListPreference;
var multiPreferenceCount = LocalDB.MultiPreferences.Count;
var entries = new string[multiPreferenceCount];
var entryValues = new string[multiPreferenceCount];
var i = 0;
foreach (var pref in LocalDB.MultiPreferences.OrderBy(e => e.Value.Name))
{
entries[i] = pref.Value.Name;
entryValues[i] = pref.Value.ID.ToString();
i++;
}
multiPref.SetEntries(entries);
multiPref.SetEntryValues(entryValues);
multiPref.SetDefaultValue(entryValues);
}
}
Run Code Online (Sandbox Code Playgroud)
这是行不通的。当我打开 MultiSelectList 时,所有项目都未被选中。有没有办法使用 MultiSelectListPreference 来解决此问题?
另一件事:在 Android 5.0.1 上,当我将 MultiSelectListPreference(在preferences.xml 中)设置为低于 listPrefTwo(在同一类别中)时 - 应用程序在 AddPreferencesFromResources 上崩溃。很奇怪,但如果我们现在谈论 MultiSelectListPreference,没有什么能让我感到惊讶。
| 归档时间: |
|
| 查看次数: |
1113 次 |
| 最近记录: |