как дела?
Я создал верхний класс ContentPage, наследующий класс ZXingScannerPage, чтобы иметь возможность создавать методы для лучшего упрощения кода. И в нем метод, который принимает в качестве параметра метку и ContentPage для установки данных, считываемых сканером.
public String ScannResult { get; set; }
}
public class ScannerHelper : ZXingScannerPage
{
public ScannerHelper()
{
this.OnScanResult += (result) => {
MessagingCenter.Send( new Message { ScannResult = result.Text }, "ScannResult");
// Parar de escanear
this.IsScanning = false;
// Alert com o código escaneado
Device.BeginInvokeOnMainThread(() => {
DisplayAlert("Código escaneado", result.Text, "OK");
Navigation.PopAsync(false);
});
};
}
public static void teste(Label label, ContentPage contentPage)
{
MessagingCenter.Subscribe<Message>(contentPage, "ScannResult", message => {
label.Text = message.ScannResult;
});
}
}
}
Пока все работает, но когда я вызываю этот класс на кнопке и запускаю позже экран берет данные и переходит к метке, но при переходе на другую страницу с помощью PushAsyn c страница пуста, и если я go вернусь на страницы и попытаюсь go перейти к следующей он пустой, и самое странное, если я оставлю приложение на своем мобильном телефоне, перейдя в меню и вернувшись к нему, страница будет нормальной. Пример: Страница A вызывает сканер и работает, на странице AI go на странице B, и она пуста, I go возвращается на страницу A и I go возвращается на страницу перед страницей A, а затем I go обратно к A - A, и теперь он белый.
Пример того, как я использую методы на кнопках и на странице:
{
InitializeComponent();
ScannerHelper.teste(lblNomeProduto, this);
}
private void ButtonScanner(object sender, EventArgs e)
{
Navigation.PushAsync(new ScannerHelper());
}