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

            SetContentView(Resource.Layout.IntelligentMistakesDataEntry);
            _riskPercentage = FindViewById <EditText>(Resource.Id.riskPercentage);
            _riskPercentage.SetFilters(new IInputFilter[] { new InputFilterMinMax(0, 100) });
            _maxMistakes = FindViewById <EditText>(Resource.Id.maxMistakes);
            _maxMistakes.SetFilters(new IInputFilter[] { new InputFilterMinMax(-1, 100) });
            _saveButton = FindViewById <Button>(Resource.Id.saveButton);
            if (Intent.Extras.GetInt("entryid") != -1)
            {
                var entry = JsonConvert.DeserializeObject <IntelligentMistakesDataEntry>(Intent.Extras.GetString("entry", ""));
                _riskPercentage.Text = entry.RiskPercentage.ToString();
                _maxMistakes.Text    = entry.MaxNumberOfMistakes.ToString();
            }
            _saveButton.Click += (sender, e) =>
            {
                var localEntry = new IntelligentMistakesDataEntry()
                {
                    RiskPercentage      = (_riskPercentage.Text != "" ? Int32.Parse(_riskPercentage.Text) : 0),
                    MaxNumberOfMistakes = (_maxMistakes.Text != "" ? Int32.Parse(_maxMistakes.Text) : 0)
                };
                Intent resultIntent = new Intent();
                resultIntent.PutExtra("entry", JsonConvert.SerializeObject(localEntry));
                resultIntent.PutExtra("entryid", Intent.Extras.GetInt("entryid"));
                SetResult(Result.Ok, resultIntent);
                Finish();
            };
        }
        /// <summary>
        /// Gets the InstaShit's settings from user's input.
        /// </summary>
        /// <param name="ignoreSettings">Specifies if the settings file should be ignored.</param>
        /// <returns>The object of Settings class with loaded values.</returns>
        private static Settings GetSettingsFromUser(bool ignoreSettings)
        {
            Console.WriteLine(ignoreSettings
                ? "Please enter the following values:"
                : "Can't find settings file, please enter the following values:");
            var settings = new Settings
            {
                Login                   = GetStringFromUser("Login"),
                Password                = GetStringFromUser("Password"),
                MinimumSleepTime        = GetIntFromUser("Minimum sleep time (in milliseconds)", 0, Int32.MaxValue),
                IntelligentMistakesData = new List <List <IntelligentMistakesDataEntry> >()
            };

            settings.MaximumSleepTime = GetIntFromUser("Maximum sleep time (in milliseconds)", settings.MinimumSleepTime, Int32.MaxValue);
            Console.Write("Specify IntelligentMistakesData for session number 1 (y/n)? ");
            if (CanContinue())
            {
                do
                {
                    var i = settings.IntelligentMistakesData.Count;
                    settings.IntelligentMistakesData.Add(new List <IntelligentMistakesDataEntry>());
                    do
                    {
                        Console.WriteLine($"IntelligentMistakeDataEntry number {settings.IntelligentMistakesData[i].Count + 1}");
                        var entry = new IntelligentMistakesDataEntry
                        {
                            RiskPercentage      = GetIntFromUser("Risk of making the mistake (0-100)", 0, 100),
                            MaxNumberOfMistakes = GetIntFromUser("Maximum number of mistakes (-1 = unlimited)", -1, Int32.MaxValue)
                        };
                        settings.IntelligentMistakesData[i].Add(entry);
                        Console.Write("Add another entry (y/n)? ");
                    } while (CanContinue());
                    Console.Write($"Specify IntelligentMistakesData for session number {i + 2} (y/n)? ");
                } while (CanContinue());
                Console.Write("Allow typo in answer (y/n)? ");
                if (!CanContinue())
                {
                    settings.AllowTypo = false;
                }
                Console.Write("Allow synonyms (y/n)? ");
                if (!CanContinue())
                {
                    settings.AllowSynonym = false;
                }
            }
            if (!ignoreSettings)
            {
                Console.Write("Save these settings (y/n)? ");
                if (CanContinue())
                {
                    File.WriteAllText(GetFileLocation("settings.json"), JsonConvert.SerializeObject(settings, Formatting.Indented));
                }
            }
            return(settings);
        }