Search code examples
xamarinxamarin.formsxamarin.androidxamarin.iosxamarin-studio

Xamarin, How do I clear data from pickers and Entry right away. Using the montemagno Xamarin.plugins.setting


When i clicked Clear, I want to clear saved data from my pickers and entry. But i click it, it doesn't clear right away. I have to close the app then re-open then it's clear. I tried to push empty strings "" but it gave me errors then re open again it froze my app.

void clearHandle_Clicked(object sender, System.EventArgs e)
{   
Settings.ClearAllData();
}

//then added to push empty string but got error
//UIApplication.Main(args, null, "AppDelegate");


void clearHandle_Clicked(object sender, System.EventArgs e)
{
DisplayAlert("EDIT", "Are you sure you want to clear data ", "OK");
nameEntry.Text = "";
nxPicker.SelectedItem = "";
locationPicker1.SelectedItem = "";
locationPicker2.SelectedItem = "";
locationPicker3.SelectedItem = "";
locationPicker4.SelectedItem = "";
locationPicker5.SelectedItem = "";
locationPicker6.SelectedItem = "";
locationPicker7.SelectedItem = "";
locationPicker8.SelectedItem = "";
Settings.ClearAllData();

}

Solution

  • Interestingly Click events sometimes run on delegates in Xamarin, both Forms and Native. So I'd suggest wrapping your clear request in a UI dispatcher delegate like so:

    void clearHandle_Clicked(object sender, System.EventArgs e)
    {   
        Xamarin.Forms.Device.BeginInvokeOnMainThread(()=>{
            Settings.ClearAllData();
        });    
    }
    
    
    void clearHandle_Clicked(object sender, System.EventArgs e)
    {
        DisplayAlert("EDIT", "Are you sure you want to clear data ", "OK");
        nameEntry.Text = "";
        nxPicker.SelectedItem = "";
        locationPicker1.SelectedItem = "";
        locationPicker2.SelectedItem = "";
        locationPicker3.SelectedItem = "";
        locationPicker4.SelectedItem = "";
        locationPicker5.SelectedItem = "";
        locationPicker6.SelectedItem = "";
        locationPicker7.SelectedItem = "";
        locationPicker8.SelectedItem = "";
        Xamarin.Forms.Device.BeginInvokeOnMainThread(()=>{
            Settings.ClearAllData();
        });
    }