Я хочу реализовать сообщение Toast в моем приложении Android. Итак, я создал в своем общем коде интерфейс:
namespace TravelApp.Renderers
{
public interface IToast
{
void show(string message);
}
}
Затем я создал в своем Android проекте реализацию интерфейса
[assembly:Dependency(typeof(TravelApp.Droid.Toast))]
namespace TravelApp.Droid
{
public class Toast : IToast
{
public void show(string message)
{
Android.Widget.Toast.MakeText(Android.App.Application.Context, message, ToastLength.Short).Show();
}
}
}
В моем файле XAML я использовал pancakeview, когда Я нажимаю на это представление. Я хочу отобразить свой тост. Сообщение:
<pancake:PancakeView x:Name="MyPancakecs" HorizontalOptions="EndAndExpand"
VerticalOptions="EndAndExpand"
CornerRadius="60"
HeightRequest="50"
WidthRequest="50"
BackgroundColor="{StaticResource BackgroundColor}"
Margin="0,0,60,0"
Padding="15"
>
<Image Source="TrayPlus"></Image>
<pancake:PancakeView.GestureRecognizers>
<TapGestureRecognizer Command="{Binding ToastMyToaster}"/>
</pancake:PancakeView.GestureRecognizers>
</pancake:PancakeView>
Затем я регистрирую свой контейнер в классе PlateformInitializer в моем android Project:
namespace TravelApp.Droid
{
public class PlatformInitializer : IPlatformInitializer
{
public void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.Register<IToast,Toast>();
}
}
}
Я добавил его в моем конструкторе приложения в MainActivity.cs:
LoadApplication(new App(new PlatformInitializer())) ;
И затем в моей ViewModel я добавляю объект IToast в свой конструктор:
namespace TravelApp.ViewModels
{
public class TravelListViewModel : BindableBase
{
private string _messageToast;
public string MessageToast
{
get { return _messageToast; }
set { SetProperty(ref _messageToast, value); }
}
public DelegateCommand ToastMyToaster;
public TravelListViewModel(INavigationService navigationService, ITravelRepository travelRepository, IToast Toaster)
{
this._navigationService = navigationService;
this._travelRepository = travelRepository;
this._messageToast = "Test Toaster";
this._toaster = Toaster;
this.ToastMyToaster = new DelegateCommand(ToastShow);
}
private void ToastShow()
{
this._toaster.show(MessageToast);
}
}
В своих исследованиях я использовал эту документацию: https://prismlibrary.com/docs/xamarin-forms/Dependency-Service.html
Однако, когда я запускаю код и нажимаю на свой pancakeview, сообщение не отображается, я даже не уверен, что команда запущена ...
Не знаю, нужно ли мне реализовать IPlateformInitializer.
Спасибо за вашу помощь,