На Android
вам не нужно изобретать велосипед, поскольку Toast
существует изначально. На других платформах нет такого понятия, как Toast
, поэтому здесь нет решения с использованием «серебряной пули». Эта проблема была решена несколькими людьми несколькими способами, поэтому я оставил комментарий, что ваш вопрос может быть дубликатом существующей цепочки с несколькими примерами.
Теперь о вашей идее. Ваша реализация работает, однако она покажет Toast
только на AbsoluteLayout
. Зачем устанавливать такое ограничение? Если вы перепроверете ссылку, которой я поделился в комментариях, вы найдете более подходящие и элегантные решения.
Кажется, я не могу заставить его работать.
Все, что вам нужно, это AbsoluteLayout
на вашей странице, чтобы вы могли вызвать свой метод:
await Popper.Pop("Hello world", referenceToYourAbsoluteLayout, 5000);
Если вы все еще по какой-то причине хотите придерживаться этого точного решения, возможно, имеет смысл вместо этого использовать метод расширения. Однако это решение просто не имеет смысла для обычного пользователя.
P.S: Еще раз, пожалуйста, проверьте существующую ветку для получения дополнительной информации.
P.S.S: пример использования вашего кода
<!-- XXXPage.xaml -->
<?xml version="1.0" encoding="utf-8"?>
<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:XXX"
x:Class="XXX.XXXPage">
<AbstractLayout x:name="myLayout />
</ContentPage>
// XXXPage.xaml.cs
public partial class XXXPage : ContentPage
{
public Test999Page()
{
InitializeComponent();
}
async protected override void OnAppearing()
{
base.OnAppearing();
await Popper.Pop("Hello world", myLayout, 5000);
}
}