Xamarin Android:为什么重写OnSaveInstanceState永远不会被调用?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 = 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 = 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永远不会被调用?的主要内容,如果未能解决你的问题,请参考以下文章