private void TryRestoreSelectedIndex() { if (!_tabLayout.IsAlive()) { return; } var activityView = _tabLayout.Context as IActivityView; if (activityView == null) { return; } var bundle = activityView.Mediator.Bundle; if (bundle != null) { var i = bundle.GetInt(SelectedIndexKey, int.MinValue); if (i != int.MinValue) { if (_tabLayout.TabCount > i) { _tabLayout.GetTabAt(i).Select(); } } } var stateListener = ReflectionExtensions.CreateWeakEventHandler <TabLayoutItemsSourceGenerator, ValueEventArgs <Bundle> >(this, (generator, o, arg3) => generator.ActivityViewOnSaveInstanceState(arg3)); activityView.Mediator.SaveInstanceState += stateListener.Handle; }