枕上从妨一夜睡,灯前读尽十年诗。这篇文章主要讲述Xamarin Android:为什么重写OnSaveInstanceState永远不会被调用?相关的知识,希望能为你提供帮助。
我试图在设备方向更改时保留一些数据,以便不再重新查询SQLite表。这是我的代码:
SfDataGrid grid;
string jsonData;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.CaseControl);
RelativeLayout layout = FindViewById<
RelativeLayout>
(Resource.Id.layoutCasos);
grid = new SfDataGrid(this);
grid.AllowResizingColumn = true;
grid.AllowSorting = true;
layout.AddView(grid);
if (savedInstanceState != null)
{
string savedJsonData = https://www.songbingjia.com/android/savedInstanceState.GetString("jsonData");
grid.ItemsSource = JsonConvert.DeserializeObject<
TableQuery<
v_Casos>
>
(savedJsonData);
}else
{
string dpPath = Path.Combine("/data/data/TPProject.TPProject/files/", "PranfHurto.db3");
var db = new SQLiteConnection(dpPath);
var data = https://www.songbingjia.com/android/db.Table<
v_Casos>
();
grid.ItemsSource = data;
jsonData = JsonConvert.SerializeObject(data);
}grid.SelectionMode = SelectionMode.Single;
grid.GridLongPressed += RowLongPress;
}protected override void OnSaveInstanceState(Bundle outState)
{
outState.PutString("jsonData", jsonData);
base.OnSaveInstanceState(outState);
}
如您所见,我将jsonData放在outState中。但是,在设备方向更改后,它始终返回null。我在该方法中放置了一个断点,但它永远不会被触发。我做错了什么?
答案【Xamarin Android(为什么重写OnSaveInstanceState永远不会被调用())】对我来说,奇怪的解决方案是,不是编写被覆盖的方法,而是复制并粘贴它。然后清理并构建解决方案,现在它可以工作。
推荐阅读
- Android WebView从资源原始文件夹加载html文件
- Xamarin Android通过一种风格控制文本颜色
- Xama不会跟踪Xamarin Android新文件
- 我是否需要所有Android SDK以及如何安装它们()
- Xamarin(Android - 带有大位图的OutOfMemory异常 - 如何解决())
- Xamarin Android Forms设计器无法识别GridLayout布局参数
- Zeppelin勒索软件指南
- 使用X-FRAME-OPTIONS保护Nginx免受点击劫持
- 保护和强化Apache Web服务器的10种最佳实践