2012-03-20 47 views
11

我在基於PhoneGap的android應用程序中遇到了一個奇怪的問題。在某些屏幕上,數字9鍵被完全忽略。這發生在我的所有Android 2.X設備上。我已經嘗試過以前版本的PG,並發現 問題首先發生在v1.2中。PhoneGap for Android不接受9鍵

以下是應該重現該問題的示例index.html文件的代碼。在Android 2.2和2.3上,標記爲「破碎」的文本框不接受數字9作爲輸入。

<!DOCTYPE html> 
    <html> 
    <head> 
     <title>Test</title> 
     <style> 
     body 
     { 
      margin:0; 
      padding:0; 
      font-size:20px; 
     } 

     input 
     { 
      height:20px; 
     } 

     #container_second 
     { 
      overflow:hidden; 
      position:relative; 
      width:100%; 
      height:150px; 
     } 

     #container_second div 
     { 
      left: -2000px; 
      position: absolute; 
      -webkit-transform: matrix(1, 0, 0, 1, 2000, 0); 
     } 
     </style> 
    </head> 
    <body> 
     <br /> 
     <div id="container_first"> 
      <div> 
       Working Text: <br /><input type="text" /><br /><br /> 
       Working Tel: <br /><input type="tel" /> 
      </div> 
     </div> 

     <br /><br /> 

     <div id="container_second"> 
      <div> 
       Broken Text: <br /><input type="text" /><br /><br /> 
       Broken Tel: <br /><input type="tel" /> 
      </div> 
     </div> 
    </body> 
    </html> 
+0

它似乎是CSS的組合導致一些問題。如果你刪除所有上述CSS或只是'溢出:隱藏',那麼它按預期工作 – dhaval 2012-03-20 06:33:17

+0

是的,但是CSS是作爲一種重現問題的方式。 – 2012-03-20 14:39:44

+0

看來有多種方法可以導致此問題發生。使用這個特定的CSS只是一種方法。我將它完全包含在內,希望它能幫助熟悉PhoneGap源代碼的人來診斷問題。 – jmsgofish 2012-03-20 18:04:35

回答

17

這可能與this issue。出於某種原因,PhoneGap正在Web視圖的WebSettings上調用setNavDump。根據android docs,setNavDump是一個過時的方法,所以如果禁用它,你應該沒問題。

一種方式來做到這一點是通過重寫類的init方法擴展DroidGap

@Override 
public void init() { 
    super.init();  
    this.appView.getSettings().setNavDump(false); 
} 

如果還是不行,請嘗試在現有onCreate方法loadUrl調用之後將其添加:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    //... snip ... 
    super.loadUrl("file:///android_asset/www/index.html", 12000); 
    this.appView.getSettings().setNavDump(false); 
    //... snip ... 
} 
+0

修復它 - 謝謝! – jmsgofish 2012-04-03 04:41:09

+3

當我在軟鍵盤上輸入數字7時,我的PhoneGap/Cordova 1.7應用程序在Nexus 7上崩潰,並且這固定了它。謝謝! – Chris 2012-07-30 19:41:53

2

我有同樣的問題。原來,你需要在config.xml文件

添加以指定通過API數量的Android SDK版本: <preference name="android-minSdkVersion" value="8" />

+0

我相信config.xml僅適用於PhoneGap Build。我在Eclipse中構建,所以我沒有那個文件。我有AndroidManifest.xml中指定的minSdkVersion,它仍然無法正常工作。 jmsgofish 2012-04-02 23:18:52

0

我在eclipse中開發了一個phonegap應用程序(用於android)。我有同樣的問題。當我按7時,應用程序停止,當我按9時,應用程序在文本區域組件中不做任何事情。這也是一個問題出現在Android版本2.2 & 2.3.3。在佈局中,有一種結構,如框架 - >框架 - >線性佈局。然後我刪除了兩個幀。我只是使用線性佈局,然後解決了問題。我可以按7 & 9,在應用程序中沒有問題。我的意思是,你應該檢查未使用的佈局組件。