2017-03-30 52 views
1

我已經創建了Xamarin pcl窗體項目,並要求用戶按下注銷按鈕時確認,其工作正常,既Android和iOS,但在同一我運行Windows UWP項目彈出窗口出現2次,我不會發生什麼事情。請指導我一些如何解決這個問題。Xamarin窗體顯示警報彈出出現2次

我在我的項目中使用了我的代碼。

我已經使用這兩個選項與等待和沒有等待關鍵字,但沒有運氣。

var resp = await DisplayAlert("","Are you sure want to Logout?","Yes", "No"); 
if (resp) 
{ 
} 

回答

0

您正在通過調用await DisplayAlert執行彈出窗口。通過將它存儲到一個變量中,你只是說你想從彈出的輸出(是或否)。第二個彈出窗口是因爲你將它添加到了你的if條件中。你應該這樣做:

Device.BeginInvokeOnMainThread(new Action(async() => 
    { 
     if(await DisplayAlert("", "Are you sure want to Logout?", "Yes", "No")) 
     { 

     } 
    })); 

希望它有幫助!

+0

我在上面的代碼中使用,但沒有運氣 Device.BeginInvokeOnMainThread(新的行動(異步()=> { 如果 (等待DisplayAlert( 「」,「你確定要註銷? 」 「是」,「否」)) { } })); – Manikandan

+0

你的評論沒有道理,這是它應該如何使用,請參閱:https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/navigation/pop-ups/ – Zotyi

+0

是的,像他一樣不要試一試。有一個錯誤,這就是他爲什麼在這裏問這個問題的原因。 – mindOfAi

0

也許用戶按下按鈕快2倍,我建議你添加一個標誌,是這樣的:

bool displayFlag = false; 
if(!displayFlag) 
{ 
    displayFlag = true; 
    var resp = await DisplayAlert("","Are you sure want to Logout?","Yes", "No"); 
    if(resp) 
    { 
     //Logout 
    } 
    displayFlag = false; 
} 

或可能的提示信息爲另一個任務(只是成像)內部,也許這可以幫助:

Device.BeginInvokeOnMainthread(() => async 
{ 
    await DisplayAlert("","Are you sure want to Logout?","Yes", "No"); 
}); 
+0

我用這個代碼但沒有運氣 Device.BeginInvokeOnMainThread(async()=> { 等待DisplayAlert(「」,「您確定要退出?」,「是」,「否」); }); – Manikandan