2016-03-09 2 views
1

Я хочу использовать DisplayAlert в своем ContentPage, чтобы показать простое сообщение, которое нужно подтвердить, нажав кнопку «ОК», поэтому мой третий аргумент - ОК". Это означает: мне не нужен четвертый аргумент для второй кнопки. Теперь я нашел несоответствие между Windows Phone и Android:Xamarin Forms DisplayAlert(): Почему существует множество аргументов в WinPhone и Android?

  • Использование нуль с Android генерирует исключение, используя только Тогда как три аргументы работ.
  • Использование трех аргументов с WinPhone дает ошибка времени компиляции «Нет перегрузки для метода« DisplayAlert »принимает 3 аргументов».

Интересно: Должен ли я написать DependencyService только для отображения предупреждения только одной кнопкой?

WinPhone версия среды выполнения: v4.0.30319 Android версии поддержка: v5


Обновление комментарий Дилана:

async void OnMyEvent(object sender, EventArgs args) 
{ 
    await DisplayAlert("Message 1", "Hello Android!", "OK"); // <- works on Android but doesn't compile on WinPhone 
    await DisplayAlert("Message 2", "Hello WinPhone!", "OK", null); // <- works on WinPhone but throws a null pointer exception on Android 
} 
+0

Можете ли вы разместить свой код, вызывающий DisplayAlert? Используете ли вы его из PCL или SAP? Я не уверен, как вы можете получать разные результаты компиляции на Android и Windows Phone, если используете один из них. – dylansturg

+0

@ Дилан: Готово. Я использую общий проект. Не знаете, как это будет выглядеть в PCL. – thomiel

ответ

0

Это мой обходной на данный момент:

#if __ANDROID__ 
      await DisplayAlert("Message 1", "Hello Android!", "OK"); 
#else 
      await DisplayAlert("Message 2", "Hello WinPhone!", "OK", null); 
#endif 

Возможно, есть лучший ...

3

Вы можете иметь кнопку OK, как кнопка отмены, как это:

var result = await DisplayAlert("Message", "Hello there!", null, "OK"); 

Это покажет окно предупреждения только с кнопкой ОК. Затем проверьте, result - false. Если это так, значит, нажата кнопка «ОК».

E.g.

var result = await DisplayAlert("Message", "Hello there!", null, "OK"); 
if (!result) //result is false 
    //Do something 
+0

спасибо .... он работал как ожидалось. – GvSharma

Смежные вопросы