2012-03-20 24 views
11

Tôi gặp sự cố lạ trong ứng dụng Android dựa trên PhoneGap của mình. Trên một số màn hình nhất định, phím số hoàn toàn bị bỏ qua. Điều này xảy ra trên tất cả thiết bị Android 2.X của tôi. Tôi đã thử với các phiên bản trước đó của PG và thấy rằng vấn đề đầu tiên xảy ra trong v1.2.PhoneGap cho Android không chấp nhận phím 9

Đây là mã cho tệp index.html mẫu sẽ tái tạo sự cố. Trên cả Android 2.2 và 2.3, các hộp văn bản có nhãn là "bị hỏng" không chấp nhận số 9 làm đầu vào.

<!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

có vẻ như sự kết hợp của css đang gây ra một số vấn đề. nếu bạn loại bỏ tất cả các css trên hoặc chỉ 'tràn: ẩn' thì nó hoạt động như mong đợi – dhaval

+0

Có, nhưng css là có như một cách để tái tạo vấn đề. –

+0

Dường như có nhiều cách để khiến vấn đề này xảy ra. Sử dụng CSS cụ thể này chỉ là một cách. Tôi đã bao gồm nó chính xác như thế này với hy vọng rằng nó sẽ giúp ai đó quen thuộc với mã nguồn PhoneGap để chẩn đoán vấn đề. – jmsgofish

Trả lời

17

Nó có thể liên quan đến this issue. Vì một số lý do, PhoneGap đang gọi setNavDump trên WebSettings của web view. setNavDump là một phương thức lỗi thời theo số android docs vì vậy bạn sẽ ổn nếu bạn tắt nó.

Một cách để làm điều đó là bằng cách ghi đè phương thức init trong lớp học của bạn kéo dài DroidGap

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

Nếu điều đó không làm việc, hãy thử thêm nó sau khi loadUrl cuộc gọi trong phương pháp hiện onCreate :

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

Điều đó đã sửa nó - Cảm ơn! – jmsgofish

+3

Ứng dụng PhoneGap/Cordova 1.7 của tôi đã gặp sự cố trên Nexus 7 bất cứ khi nào tôi nhập số 7 trên bàn phím mềm và điều này đã sửa nó. Cảm ơn! – Chris

2

Tôi gặp vấn đề tương tự. Chỉ ra rằng bạn cần phải xác định phiên bản Android SDK qua số API trong file config.xml

add: <preference name="android-minSdkVersion" value="8" />

+0

Tôi tin rằng config.xml chỉ dành cho PhoneGap Build. Tôi đang xây dựng trong Eclipse vì vậy tôi không có tập tin đó. Tôi có minSdkVersion được chỉ định trong AndroidManifest.xml và nó vẫn không hoạt động chính xác. jmsgofish

0

Tôi đã phát triển ứng dụng Phonegap trong nhật thực (dành cho Android). Tôi đã từng gặp vấn đề tương tự. Khi tôi nhấn vào 7, ứng dụng dừng lại và khi tôi nhấn vào 9, ứng dụng không làm gì trong các thành phần vùng văn bản. Nó cũng là một vấn đề xuất hiện trên các phiên bản Android 2.2 & 2.3.3. Trong layout, có một cấu trúc như khung -> frame-> layout tuyến tính. Và sau đó tôi gỡ bỏ cả hai khung hình. Tôi chỉ sử dụng bố trí tuyến tính và sau đó vấn đề được giải quyết. Tôi có thể bấm vào 7 & 9 và không có vấn đề gì trong ứng dụng. Ý tôi là, bạn nên kiểm tra các thành phần bố trí không được sử dụng.

Các vấn đề liên quan