保存我的活动状态xamarin.android

本文关键字:android xamarin 活动状态 我的 保存 | 更新日期: 2023-09-27 18:15:23

我想保存这个活动的状态,当有人关闭应用程序。它只是包含一个ListActivity simplelistitemchecked…

   namespace XamarinScanner
     {
      [Activity(Label = "@string/scanHistory", ScreenOrientation = ScreenOrientation.Portrait)]
     public class ScanHistoryActivity : ListActivity
{
    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);
        var codes = Intent.Extras.GetStringArrayList("Codes");
        codes.ToList();
        ListAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItemChecked, codes);
        ListView lv = FindViewById<ListView>(Android.Resource.Id.List);
        lv.ChoiceMode = ChoiceMode.Multiple;
        foreach (var c in codes)
        {
            if (c.Contains("Success"))
            {
                int position = codes.IndexOf(c);
                lv.SetItemChecked(position, true);
            }
        }
    }
}

}

这是我保存我的状态为我的mainactivity,它似乎保留数据为我的listactivity和主活动时的背景。我想我只需要做同样的事情当应用程序被销毁…

    protected override void OnSaveInstanceState(Bundle outState)'
       {
        outState.PutStringArrayList("Codes", _codes.ToArray());
        base.OnSaveInstanceState(outState);
    }
    protected override void OnCreate(Bundle bundle)
    {
        Url = "http://10.0.0.103:4321/Scan";
        if (bundle != null)
        {
            var c = bundle.GetStringArrayList("Codes");
           instance state");
        }
        base.OnCreate(bundle);
        SetContentView(Resource.Layout.Main);`

保存我的活动状态xamarin.android

当用户关闭App时是什么意思?你是说当他关闭一会儿再打开它,还是当应用程序完全关闭时?
如果你指的是第二次,你应该使用OnDestroy来"保存"状态,并在下次加载OnCreate。您必须手动创建保存和加载过程(使用database?SharedPreferences?)这取决于你)
也可以在这里查看活动生命周期。

也总是张贴你已经尝试到目前为止,它不希望和确切的结果,你期望

在OnDestroy上存储值的一个简单方法是使用SharedPreferences:
ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences (Application.Context);
ISharedPreferencesEditor editor = prefs.Edit ();
editor.PutBoolean ("keyName", _bool);
// editor.Commit();    // applies changes synchronously on older APIs
editor.Apply();        // applies changes asynchronously on newer APIs

使用:

访问保存的值
ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences (Application.Context);
_bool = prefs.GetBoolean ("keyName");
_int = prefs.GetInt ("keyName");
_string = prefs.GetString ("keyName");