protected async override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            SetContentView(Resource.Layout.CrueltySpot);        

            //_loadingDialog = LoadingDialogManager.ShowLoadingDialog(this);
            _loadingDialog = DialogManager.ShowLoadingDialog(this, "Retrieving Cruelty Spot Details");

            // Event Handlers
            IssueButton.Click += (sender, args) => SetViewState(CrueltySpotViewState.TheIssue);
            TakeActionButton.Click += (sender, args) => SetViewState(CrueltySpotViewState.TakeAction);

            var crueltySpotId = Intent.GetStringExtra(AppConstants.CrueltySpotIdKey);
            var crueltySpotsService = new CrueltySpotsService();
            _crueltySpot = await crueltySpotsService.GetByIdAsync(crueltySpotId, true);
            RunOnUiThread(() =>
                {
                    var formattedAddress = String.Format("{0}\n{1}", _crueltySpot.Address, _crueltySpot.CityStateAndZip);
                    FindViewById<TextView>(Resource.Id.Name).Text = _crueltySpot.Name;
                    FindViewById<TextView>(Resource.Id.Address).Text = formattedAddress;
                    var resourceId = ResourceHelper.GetDrawableResourceId(this, _crueltySpot.CrueltySpotCategory.IconName, ResourceSize.Medium);
                    FindViewById<ImageView>(Resource.Id.CrueltyTypeImage).SetImageResource(resourceId);
                    SetViewState(CrueltySpotViewState.TakeAction);
                    _loadingDialog.Hide();

                    var showSuccessAddedAlert = Intent.GetBooleanExtra(AppConstants.ShowCrueltySpotAddedSuccessfullyKey, false);
                    if (showSuccessAddedAlert)
                    {
                        DialogManager.ShowAlertDialog(this, "Thanks!", "...for reporting animal cruelty here. This location is now on the map so others can take action!", true);
                    }

                    FindViewById<TextView>(Resource.Id.issueName).Text = _crueltySpot.CrueltySpotCategory.Name;
                    FindViewById<TextView>(Resource.Id.issueDescription).Text = _crueltySpot.CrueltySpotCategory.Description;
                });
        }
        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            fa = base.Activity;
            ll = (RelativeLayout)inflater.Inflate(Resource.Layout.ReportCruelty, container, false);

            //CrueltyNavMenuHelper.InitCrueltyNavMenu (this, CrueltyNavMenuItem.ReportIt);

            _crueltyReport = ((AfaApplication)fa.ApplicationContext).CrueltyReport;
            if (_crueltyReport == null)
            {
                _crueltyReport = new CrueltyReport();
                ((AfaApplication)fa.ApplicationContext).CrueltyReport = _crueltyReport;
            }

            _locationInput = ll.FindViewById<EditText>(Resource.Id.LocationInput);
            _crueltyTypeInput = ll.FindViewById<EditText>(Resource.Id.TypeOfCrueltyInput);

            if (_crueltyReport.PlaceSpecified)
            {
                var locationText = new StringBuilder();
                locationText.Append("<font color='#D34C96'><b>");
                locationText.Append(_crueltyReport.PlaceName);
                locationText.Append("</b></font>");
                locationText.Append("<br />");
                locationText.Append("<font color='#B5B5B5'><small>");
                locationText.Append(_crueltyReport.PlaceFormattedShortAddress);
                locationText.Append("</small></font>");
                var htmlText = locationText.ToString();
                _locationInput.SetText(Html.FromHtml(htmlText), TextView.BufferType.Spannable);
            }

            _crueltyTypeInput.Text = _crueltyReport.CrueltyType != null ? _crueltyReport.CrueltyType.Name : null;

            //_locationInput.FocusChange += (sender, args) =>
            //{
            //    if (args.HasFocus) {
            //        var intent = new Intent (fa, typeof(NearbyPlacesActivity));
            //        StartActivity (intent);
            //    }
            //};

            _locationInput.Click += (sender, args) =>
            {
                var intent = new Intent(fa, typeof(NearbyPlacesActivity));
                StartActivity(intent);
            };

            //_crueltyTypeInput.FocusChange += (sender, args) =>
            //{
            //    if (args.HasFocus) {
            //        var intent = new Intent (fa, typeof(CrueltyTypesActivity));
            //        StartActivity (intent);
            //    }
            //};

            _crueltyTypeInput.Click += (sender, args) =>
            {
                var intent = new Intent(fa, typeof(CrueltyTypesActivity));
                StartActivity(intent);
            };

            //// ToDo: This line hides the soft keyboard, but doing so makes the EditText only have 1 line.
            //// Look into alternative
            ////_locationInput.InputType = InputTypes.Null;
            //_crueltyTypeInput.InputType = InputTypes.Null;

            _submitButton = ll.FindViewById<Button>(Resource.Id.SubmitButton);
            _submitButton.Enabled = _crueltyReport.PlaceSpecified && _crueltyReport.CrueltyTypeSpecified;

            _submitButton.Click +=
                (sender, args) =>
                {
                    // Create a new Cruelty Spot
                    _loadingDialog = DialogManager.ShowSubmittingDialog(fa);
                    //CrueltySpotDto newCrueltySpot;
                    CrueltySpot newCrueltySpot;

                    if (_crueltyReport.IsGooglePlace())
                    {
                        // Fetch details from google
                        var googlePlaces = new GooglePlacesApi.GooglePlaces(AfaConfig.GoogleApiKey);
                        googlePlaces.GetDetails(_crueltyReport.GooglePlace.Reference, response =>
                        {
                            // ToDo: Check Status and handle non-OK
                            var placeDetails = response.result;

                            var latitude = placeDetails.geometry.location.lat;
                            var longitude = placeDetails.geometry.location.lng;
                            newCrueltySpot = new CrueltySpot
                            {
                                Name = placeDetails.name,
                                //Description = _descriptionInput.Text,
                                Address = placeDetails.Address,
                                City = placeDetails.City,
                                StateProvinceAbbreviation = placeDetails.StateOrProvince,
                                Zipcode = placeDetails.PostalCode,
                                PhoneNumber = placeDetails.formatted_phone_number,
                                WebpageUrl = placeDetails.website,
                                //Latitude = placeDetails.geometry.location.lat,
                                //Longitude = placeDetails.geometry.location.lng,
                                Location = new ParseGeoPoint(latitude, longitude),
                                //CrueltySpotCategoryId = _crueltyReport.CrueltyType.Id,
                                CrueltySpotCategory = ParseObject.CreateWithoutData<CrueltySpotCategory>(_crueltyReport.CrueltyType.Id),
                                GooglePlaceId = placeDetails.id
                            };

                            SubmitNewCrueltySpot(newCrueltySpot);

                        });
                    }
                    else
                    {
                        // Submit with user lat/lng
                        var gpsTracker = ((AfaApplication)fa.ApplicationContext).GetGpsTracker(fa);

                        var latitude = gpsTracker.Latitude;
                        var longitude = gpsTracker.Longitude;

                        newCrueltySpot = new CrueltySpot
                        {
                            Name = _crueltyReport.PlaceName,
                            //Description = _descriptionInput.Text,
                            Address = _crueltyReport.UserGeneratedPlace.Address,
                            City = _crueltyReport.UserGeneratedPlace.City,
                            StateProvinceAbbreviation = _crueltyReport.UserGeneratedPlace.StateProvinceAbbreviation,
                            Zipcode = _crueltyReport.UserGeneratedPlace.Zipcode,
                            //PhoneNumber = placeDetails.formatted_phone_number,
                            //WebpageUrl = placeDetails.website,
                            Email = _crueltyReport.UserGeneratedPlace.Email,
                            //Latitude = gpsTracker.Latitude,
                            //Longitude = gpsTracker.Longitude,
                            Location = new ParseGeoPoint(latitude, longitude),
                            //CrueltySpotCategoryId = _crueltyReport.CrueltyType.Id
                            CrueltySpotCategory = ParseObject.CreateWithoutData<CrueltySpotCategory>(_crueltyReport.CrueltyType.Id)
                        };

                        SubmitNewCrueltySpot(newCrueltySpot);
                    }


                };

            return ll;

        }
        /*
        public override bool OnCreateOptionsMenu (ActionBar_Sherlock.View.IMenu menu)
        {
            base.OnCreateOptionsMenu (menu);
            SupportMenuInflater.Inflate (Resource.Menu.report_menu, menu);
            return true;
        }
        */

        private async void SubmitNewCrueltySpot(CrueltySpot newCrueltySpot)
        {
            var crueltySpotsService = new CrueltySpotsService();
            var newCrueltySpotId = await crueltySpotsService.SaveAsync(newCrueltySpot);

            fa.RunOnUiThread(() =>
            {
                var intent = new Intent(fa, typeof(CrueltySpotActivity));
                intent.PutExtra(AppConstants.ShowCrueltySpotAddedSuccessfullyKey, true);
                intent.PutExtra(AppConstants.CrueltySpotIdKey, newCrueltySpotId);
                ClearAllUi();
                _crueltyReport.ClearAll();
                CommitCrueltyReport();
                StartActivity(intent);
                _loadingDialog.Dismiss();
            });
        }