我正在尝试进行简单的覆盖并在我的页面加载时加载一些数据,我在代码隐藏页面中使用以下代码。
namespace XYZ
{
public partial class MainPage : ContentPage
{
private Label results;
private Label groupResults;
public MainPage()
{
InitializeComponent();
results = new Label();
groupResults = new Label();
}
protected override void OnAppearing()
{
base.OnAppearing();
storeIdTxt.Text = Settings.StoreIdSetting;
}
}
}
如果我取消注释覆盖的东西工作正常,我得到的错误似乎是附加在这里的通用
我的设置类非常简单,如下所示
using System;
using System.Collections.Generic;
using System.Text;
using Plugin.Settings;
using Plugin.Settings.Abstractions;
namespace NWMPosNG.Helpers
{
/// <summary>
/// This is the Settings static class that can be used in your Core solution or in any
/// of your client applications. All settings are laid out the same exact way with getters
/// and setters.
/// </summary>
public static class Settings
{
private static ISettings AppSettings
{
get
{
return CrossSettings.Current;
}
}
#region Setting Constants
private const string SettingsKey = "settings_key";
private static readonly string SettingsDefault = string.Empty;
private const string StoreId = null;
private static readonly string StoreIdDefault = "0";
#endregion
public static string GeneralSettings
{
get
{
return AppSettings.GetValueOrDefault(SettingsKey, SettingsDefault);
}
set
{
AppSettings.AddOrUpdateValue(SettingsKey, value);
}
}
public static string StoreIdSetting
{
get
{
return AppSettings.GetValueOrDefault(StoreId, StoreIdDefault);
}
set
{
AppSettings.AddOrUpdateValue(StoreId, value);
}
}
}
}
我将问题范围缩小到使用
访问保存的数据时storeIdTxt.Text = Settings.StoreIdSetting;
但我不明白为什么会导致崩溃。
答案 0 :(得分:0)
这条线是罪魁祸首
private const string StoreId = null;
我真的不明白为什么,但是将其设置为非NULL值会导致崩溃消失
答案 1 :(得分:0)
您正在使用James Montemagno的Settings Plugin。这几乎是KeyValuePair
,它跨会话存储在本地设备上。
在你的情况下:
AppSettings.GetValueOrDefault(StoreId, StoreIdDefault);
转换为:
AppSettings.GetValueOrDefault(null, "0");
崩溃是因为&#39; null&#39;不能成为一把钥匙。这就是为什么设置密钥(StoreId
)可以防止崩溃发生的原因。