public static WeatherAlertsFragment NewInstance(LocationData location)
        {
            var fragment = new WeatherAlertsFragment();

            if (location != null)
            {
                fragment.location = location;
            }
            return(fragment);
        }
        public static WeatherAlertsFragment NewInstance(LocationData location, WeatherNowViewModel weatherViewModel)
        {
            var fragment = new WeatherAlertsFragment();

            if (location != null && weatherViewModel != null)
            {
                fragment.location    = location;
                fragment.weatherView = weatherViewModel;
            }
            return(fragment);
        }
        public override void OnResume()
        {
            base.OnResume();

            // Go straight to alerts here
            if (Arguments != null && Arguments.GetBoolean(WeatherWidgetService.ACTION_SHOWALERTS, false))
            {
                // Remove key from Arguments
                Arguments.Remove(WeatherWidgetService.ACTION_SHOWALERTS);

                // Show Alert Fragment
                AppCompatActivity.SupportFragmentManager.BeginTransaction()
                .Add(Resource.Id.fragment_container, WeatherAlertsFragment.NewInstance(location))
                .Hide(this)
                .AddToBackStack(null)
                .Commit();

                return;
            }

            // Don't resume if fragment is hidden
            if (this.IsHidden)
            {
                return;
            }
            else
            {
                Task.Run(async() => await Resume());
            }

            // Title
            if (AppCompatActivity != null)
            {
                AppCompatActivity.SupportActionBar.Title = GetString(Resource.String.title_activity_weather_now);
            }
        }
        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            // Inflate the layout for this fragment
            View view = inflater.Inflate(Resource.Layout.fragment_weather_now, container, false);

            // Setup Actionbar
            HasOptionsMenu = false;

            refreshLayout          = (SwipeRefreshLayout)view;
            mainView               = view.FindViewById <NestedScrollView>(Resource.Id.fragment_weather_now);
            mainView.ScrollChange += ScrollView_ScrollChange;
            bgImageView            = view.FindViewById <ImageView>(Resource.Id.image_view);
            // Condition
            locationName     = view.FindViewById <TextView>(Resource.Id.label_location_name);
            updateTime       = view.FindViewById <TextView>(Resource.Id.label_updatetime);
            weatherIcon      = view.FindViewById <TextView>(Resource.Id.weather_icon);
            weatherCondition = view.FindViewById <TextView>(Resource.Id.weather_condition);
            weatherTemp      = view.FindViewById <TextView>(Resource.Id.weather_temp);
            // Details
            detailsPanel  = view.FindViewById(Resource.Id.details_panel);
            humidity      = view.FindViewById <TextView>(Resource.Id.humidity);
            pressureState = view.FindViewById <TextView>(Resource.Id.pressure_state);
            pressure      = view.FindViewById <TextView>(Resource.Id.pressure);
            visiblity     = view.FindViewById <TextView>(Resource.Id.visibility_val);
            feelslike     = view.FindViewById <TextView>(Resource.Id.feelslike);
            windDirection = view.FindViewById <TextView>(Resource.Id.wind_direction);
            windSpeed     = view.FindViewById <TextView>(Resource.Id.wind_speed);
            sunrise       = view.FindViewById <TextView>(Resource.Id.sunrise_time);
            sunset        = view.FindViewById <TextView>(Resource.Id.sunset_time);
            // Forecast
            forecastPanel            = view.FindViewById <RelativeLayout>(Resource.Id.forecast_panel);
            forecastPanel.Visibility = ViewStates.Invisible;
            forecastView             = view.FindViewById <Android.Support.V7.Widget.RecyclerView>(Resource.Id.forecast_view);
            // Additional Details
            forecastSwitch = view.FindViewById <Switch>(Resource.Id.forecast_switch);
            forecastSwitch.CheckedChange += ForecastSwitch_CheckedChange;
            forecastSwitch.Visibility     = ViewStates.Gone;
            txtForecastView               = view.FindViewById <ViewPager>(Resource.Id.txt_forecast_viewpgr);
            txtForecastView.Adapter       = new TextForecastPagerAdapter(this.Activity, new List <TextForecastItemViewModel>());
            txtForecastView.Visibility    = ViewStates.Gone;
            hrforecastPanel               = view.FindViewById <LinearLayout>(Resource.Id.hourly_forecast_panel);
            hrforecastPanel.Visibility    = ViewStates.Gone;
            hrforecastView                = view.FindViewById <Android.Support.V7.Widget.RecyclerView>(Resource.Id.hourly_forecast_view);
            precipitationPanel            = view.FindViewById <RelativeLayout>(Resource.Id.precipitation_card);
            precipitationPanel.Visibility = ViewStates.Gone;
            chanceLabel     = view.FindViewById <TextView>(Resource.Id.chance_label);
            chance          = view.FindViewById <TextView>(Resource.Id.chance_val);
            cloudinessLabel = view.FindViewById <TextView>(Resource.Id.cloudiness_label);
            cloudiness      = view.FindViewById <TextView>(Resource.Id.cloudiness);
            qpfRain         = view.FindViewById <TextView>(Resource.Id.qpf_rain_val);
            qpfSnow         = view.FindViewById <TextView>(Resource.Id.qpf_snow_val);
            // Alerts
            alertButton        = view.FindViewById(Resource.Id.alert_button);
            alertButton.Click += (sender, e) =>
            {
                // Show Alert Fragment
                if (weatherView.Extras.Alerts.Count > 0)
                {
                    AppCompatActivity.SupportFragmentManager.BeginTransaction()
                    .Add(Resource.Id.fragment_container, WeatherAlertsFragment.NewInstance(location, weatherView))
                    .Hide(this)
                    .AddToBackStack(null)
                    .Commit();
                }
            };
            alertButton.Visibility = ViewStates.Invisible;

            // Cloudiness only supported by OWM
            cloudinessLabel.Visibility = ViewStates.Gone;
            cloudiness.Visibility      = ViewStates.Gone;

            forecastView.HasFixedSize = true;
            forecastAdapter           = new ForecastItemAdapter(new List <ForecastItemViewModel>());
            forecastView.SetAdapter(forecastAdapter);

            hrforecastView.HasFixedSize = true;
            hrforecastAdapter           = new HourlyForecastItemAdapter(new List <HourlyForecastItemViewModel>());
            hrforecastView.SetAdapter(hrforecastAdapter);

            // SwipeRefresh
            refreshLayout.SetColorSchemeColors(ContextCompat.GetColor(Activity, Resource.Color.colorPrimary));
            refreshLayout.Refresh += delegate
            {
                Task.Run(async() =>
                {
                    if (Settings.FollowGPS && await UpdateLocation())
                    {
                        // Setup loader from updated location
                        wLoader = new WeatherDataLoader(this.location, this, this);
                    }

                    await RefreshWeather(true);
                });
            };

            // Nav Header View
            navheader      = Activity.FindViewById <NavigationView>(Resource.Id.nav_view).GetHeaderView(0);
            navLocation    = navheader.FindViewById <TextView>(Resource.Id.nav_location);
            navWeatherTemp = navheader.FindViewById <TextView>(Resource.Id.nav_weathertemp);

            weatherCredit = view.FindViewById <TextView>(Resource.Id.weather_credit);

            loaded = true;
            refreshLayout.Refreshing = true;

            return(view);
        }