2012-03-22 53 views
3

我在PhoneGap應用程序中使用以下代碼片段。PhoneGap框架中navigator.notification.confirm中按鈕的順序

 function registrationCallBack(button){ 
      if(button == 2) { 
       window.location.href = "login.html"; 
      } 
     } 

    navigator.notification.confirm("Are you sure ?", registrationCallBack, "Confirmation", "Cancel, Ok"); 

按鈕的順序在iPhone中的「取消」和「確定」正確顯示。 但是對於Android來說,按鈕的順序是相反的。它的來臨是「好的」,然後是「取消」。

因此,按鈕索引在回調方法中發生了變化。

iPhone Screenshot android Screenshot

所有建議都歡迎:)

感謝,

+0

根據Android的大腦,我創建了一個bug來跟蹤這個https://issues.apache.org/jira/browse/CB-889 – 2012-06-11 17:48:18

+0

它的一個「功能」不是一個bug。 – DaveWalley 2013-01-15 17:30:44

+0

您可能不想「解決」這個問題,因爲用戶期望特定平臺上某些地方的按鈕。 – 2014-07-24 19:46:12

回答

2

嘗試使用以下解決方案:

function showConfirm(message, callback, buttonLabels, title){ 

    //Set default values if not specified by the user. 
    buttonLabels = buttonLabels || 'OK,Cancel'; 

    title = title || "default title"; 

    //Use Cordova version of the confirm box if possible. 
    if(navigator.notification && navigator.notification.confirm){ 

      var _callback = function(index){ 
       if(callback){ 
        callback(index == 1); 
       } 
      }; 

      navigator.notification.confirm(
       message,  // message 
       _callback, // callback 
       title,  // title 
       buttonLabels // buttonName 
      ); 

    //Default to the usual JS confirm method. 
    }else{ 
     invoke(callback, confirm(message)); 
    } 
} 

這裏是你將如何使用它:

var message = "Would you like to proceed?"; 
var title = "Important Question"; 

//The first element of this list is the label for positive 
//confirmation i.e. Yes, OK, Proceed. 
var buttonLabels = "Yes,No"; 

var callback = function(yes){ 
    if(yes){ 
     alert('Proceed'); 
    }else{ 
     alert('Do Not Proceed'); 
    } 
}; 

showConfirm(message, callback, buttonLabels, title); 
+0

你能解釋一下嗎?var _callback = function(index){if(callback){callback(index == 1); } };'??這樣做總是返回1回調函數? – Federico 2013-11-25 17:53:22

+1

回調將按鈕索引轉換爲布爾值。例如,yes按鈕位於索引1中,所以當用戶點擊yes按鈕時,「index == 1」等於「true」等。 – Zorayr 2013-11-26 19:10:21

0

我還沒有在iPhone上試過這個。但在Android中嘗試過。我沒有遇到1.4.1的問題。因此,我建議你升級你的phonegap版本。您遇到的問題可能會在他們的新版本中得到解決。 :)

2

這不是一個問題。你所得到的是各自平臺的本地行爲。在iOS中,「取消」按鈕將顯示在左側,在Android中您將在右側顯示。如果問題只是按鈕索引,那麼你可以在你的代碼中處理它。但是你不能改變屏幕上按鈕的順序。

0

我有點晚,但我有同樣的問題,但是我所做的是改變他們,所以「取消」去哪裏「好」和「好」去哪裏「取消」。這對我有效。