繁体   English   中英

保存复选框状态android xamarin

[英]Save checkbox state android xamarin

我是xamarin上的新手,即使应用程序已关闭,我也试图保存我的复选框状态,因为当我关闭它时,复选框会重置为取消选中状态...

还..被更改的图像重置..有什么办法可以同时保存两者吗?

 protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        SetContentView(Resource.Layout.layout1);

        var seletor = FindViewById<CheckBox>(Resource.Id.checkBox1);
        var imagem = FindViewById<ImageView>(Resource.Id.imageView1);

        seletor.Click += (o, e) => {
            if (seletor.Checked)
                imagem.SetImageResource(Resource.Drawable.estado1);

            else
                imagem.SetImageResource(Resource.Drawable.estado2);

        };
    }

您是否尝试过使用首选项?

检查以下内容: 如何保存用户设置

存储选择的onclose或suspend ..的选项,并检索onResume / OnLoad

就像是:

 // Function called from OnDestroy
protected void saveset(){

    //store
    var prefs = Application.Context.GetSharedPreferences("MyApp", FileCreationMode.Private);
    var prefEditor = prefs.Edit();
    prefEditor.PutString("PrefName", "Some value");
    prefEditor.Commit();

}

// Function called from OnCreate
protected void retrieveset()
{
    //retreive 
    var prefs = Application.Context.GetSharedPreferences("MyApp", FileCreationMode.Private);              
    var somePref = prefs.GetString("PrefName", null);

    //Show a toast
    RunOnUiThread(() => Toast.MakeText(this, somePref, ToastLength.Long).Show());

}

如提供的链接中所示。

当然,您需要适应您的需求并获取/填充复选框的值。

如果需要,还可以实现某种类型的数据库,并使用相同的机制来持久化和检索设置。

这通常是我用来存储设置和保留需要“记住”的值的东西

这是一个示例,说明我如何在一个应用程序中使用相同的行为..而不是复选框..但您可以看到它是如何工作的。 我删除了一些代码,但我认为应该是一个很好的例子。

[Activity(Label = "@string/ApplicationName",
        Icon = "@drawable/Icon")]
    public class PersonalDetailsActivity : Activity
    {
        ...
        private ISharedPreferencesEditor prefEditor;
        private ISharedPreferences preferences;
        ...

        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            SetContentView(Resource.Layout.PersonalDetailView);

            preferences = Application.Context.GetSharedPreferences("AppName", FileCreationMode.Private);


            PopulatePersistedData();
        }

        private void PopulatePersistedData()
        {
            myId = preferences.GetInt(nameof(myData.Id), 0);

            name.Text = preferences.GetString(nameof(myData.Name), null);
            address.Text = preferences.GetString(nameof(myData.Address), null);
            city.Text = preferences.GetString(nameof(myData.City), null);
            county.Text = preferences.GetString(nameof(myData.County), null);
            emailAddress.Text = preferences.GetString(nameof(myData.Email), null);
            phoneNumber.Text = preferences.GetString(nameof(myData.PhoneNumber), null);
            bio.Text = preferences.GetString(nameof(myData.Bio), null);
            rating.Rating = 5;

        }

        private void SaveButton_Click(object sender, EventArgs e)
        {
            prefEditor = preferences.Edit();

            myData = new Citizen();

            myData.Name = name.Text;
            myData.Address = address.Text;
            myData.City = city.Text;
            myData.County = county.Text;
            myData.Email = emailAddress.Text;
            myData.PhoneNumber = phoneNumber.Text;
            myData.Bio = bio.Text;

            prefEditor.PutInt(nameof(myData.Id), myId);
            prefEditor.PutString(nameof(myData.Name), myData.Name);
            prefEditor.PutString(nameof(myData.Address), myData.Address);
            prefEditor.PutString(nameof(myData.City), myData.City);
            prefEditor.PutString(nameof(myData.County), myData.County);
            prefEditor.PutString(nameof(myData.Email), myData.Email);
            prefEditor.PutString(nameof(myData.PhoneNumber), myData.PhoneNumber);
            prefEditor.PutString(nameof(myData.Bio), myData.Bio);

            prefEditor.Apply();
            prefEditor.Commit();

            var intent = new Intent();
            intent.PutExtra("CitizenName", name.Text);

            SetResult(Result.Ok, intent);
            this.Finish();
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM