Выполнить действие после SignOut () Xamarin.Android - PullRequest
0 голосов
/ 20 сентября 2019

Как добавить метод .AddOnCompleteListener(this) к SignOut() в Xamarin.Android.

Я хочу вернуться на страницу входа после выхода.Я использую Xamarin.Firebase.Auth для входа в систему, и я вхожу в систему следующим образом:

private void InitFirebaseAuth()
    {
        app = FirebaseApp.Instance;

        auth = FirebaseAuth.GetInstance(app);

        var user = auth.CurrentUser;

        if (user != null)
        {
            StartActivity(new Intent(this, typeof(HomeActivity)));

            Finish();
        }
    }

Затем после входа в систему я хочу выйти из системы и снова перейти на страницу регистрации, и я хочучтобы быть уверенным, что я успешно вышел из системы, но SignOut() не имеет .AddOnCompleteListener(this).

примера:

public class HomeActivity : AppCompatActivity, IOnCompleteListener
{
    #region Public Properties
    private FirebaseAuth auth;
    #endregion

    FirebaseUser user;

    private DatabaseReference RealTimeDatabase;        

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

        SetContentView(Resource.Layout.home);

        auth = FirebaseAuth.GetInstance(MainActivity.app);

        user = auth.CurrentUser;

        //Init Firebase
        RealTimeDatabase = FirebaseDatabase.Instance.GetReference("Users");

        var welcomeMessage = FindViewById<TextView>(Resource.Id.welcomeMessage);
        var LogOutBtn = FindViewById<Button>(Resource.Id.logOutBtn);

        welcomeMessage.Text = $"Welcome {user.DisplayName}!";

        LogOutBtn.Click += delegate
        {
            auth.SignOut().AddOnCompleteListener(this);              
        };
    }

    public void OnComplete(Task task)
    {
        if (task.IsSuccessful)
        {              
            StartActivity(new Intent(this, typeof(MainActivity)));

            Finish();
        }
        else
        {
            Snackbar snackbar = Snackbar.Make(activity_main, "Failed", Snackbar.LengthShort);

            snackbar.Show();
        }
    }
}     

Любая помощь, пожалуйста?

1 Ответ

1 голос
/ 20 сентября 2019

Операция SignOut является синхронной, поэтому выход завершается, как только метод завершен.Вот почему он не имеет / не нуждается в обработчике завершения.Вы можете просто поместить любой код, который должен произойти после выхода из системы, сразу после вызова метода:

auth.SignOut();
// whatever needs to happen after signing out
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...