2012-03-20 1 views
11

Ho uno strano problema nella mia app Android basata su PhoneGap. Su alcune schermate, la chiave numero 9 viene completamente ignorata. Questo accade su tutti i miei dispositivi Android 2.X. Ho provato con le versioni precedenti di PG e ho trovato che il problema si è verificato per la prima volta nella v1.2.PhoneGap per Android non accetta il tasto 9

Ecco il codice per un file index.html di esempio che dovrebbe riprodurre il problema. Sia su Android 2.2 che su 2.3, le caselle di testo etichettate come "interrotte" non accettano il numero 9 come input.

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

sembra che la combinazione del css stia causando qualche problema. se rimuovi tutto il css sopra o semplicemente "overflow: hidden" allora funziona come previsto – dhaval

+0

Sì, ma il css è lì come un modo per riprodurre il problema. –

+0

Sembra che ci siano diversi modi per causare questo problema. L'utilizzo di questo particolare CSS è solo un modo. L'ho incluso esattamente così nella speranza che possa aiutare qualcuno a familiarizzare con il codice sorgente di PhoneGap per diagnosticare il problema. – jmsgofish

risposta

17

potrebbe essere legato alla this issue. Per qualche motivo PhoneGap chiama setNavDump nelle WebSettings della vista web. setNavDump è un metodo obsoleto in base allo android docs quindi dovresti stare bene se lo disabiliti.

Un modo per farlo è l'override del metodo init nella classe che si estende DroidGap

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

Se questo non funziona, prova ad aggiungere dopo il loadUrl chiamata nel metodo esistente onCreate :

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

Che risolto - Grazie! – jmsgofish

+3

La mia app PhoneGap/Cordova 1.7 si è bloccata sul Nexus 7 ogni volta che inserivo il numero 7 sulla tastiera virtuale, e questo l'ha risolto. Grazie! – Chris

2

Ho avuto lo stesso problema. Si scopre che è necessario specificare la versione SDK di Android tramite il numero di API nel file config.xml

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

+0

Credo che config.xml sia solo per PhoneGap Build. Sto costruendo in Eclipse quindi non ho quel file. Ho il minSdkVersion specificato in AndroidManifest.xml e ancora non funziona correttamente. jmsgofish

0

ho sviluppato un'applicazione PhoneGap in Eclipse (per Android). Ho avuto lo stesso problema. Quando ho premuto su 7, l'applicazione si è interrotta e quando si preme su 9, l'applicazione non fa nulla nei componenti dell'area di testo. Era anche un problema appare su Android versioni 2.2 & 2.3.3. Nel layout, c'erano una struttura come frame-> frame-> layout lineare. E poi ho rimosso entrambi i fotogrammi. Ho appena usato il layout lineare e poi il problema risolto. Posso premere su 7 & 9 e non ci sono problemi nell'applicazione. Voglio dire, dovresti controllare i componenti del layout inutilizzati.