2012-03-20 4 views
11

У меня странная проблема в приложении Android для Android. На некоторых экранах ключ номер 9 полностью игнорируется. Это происходит на всех моих устройствах Android 0.2.X. Я попытался с предыдущими версиями PG и обнаружил, что проблема впервые возникла в версии 2.1.PhoneGap для 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 или просто 'overflow: hidden', то он будет работать как ожидалось – dhaval

+0

Да, но css существует как способ воспроизвести проблему. –

+0

Кажется, что существует множество способов вызвать эту проблему. Использование этого CSS является одним из способов. Я включил его именно так в надежде, что это поможет кому-то, знакомому с исходным кодом PhoneGap, диагностировать проблему. – jmsgofish

ответ

17

Это может быть связано с this issue. По какой-то причине PhoneGap вызывает setNavDump в WebSettings веб-представления. setNavDump - устаревший метод в соответствии с android docs, поэтому вы должны быть в порядке, если его отключить.

Один из способов сделать это путем переопределения метода инициализации в своем классе, который расширяет DroidGap

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

Если это не сработает, попробуйте добавить его после loadUrl вызова в существующем onCreate методе :

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

Это исправило это - Спасибо! – jmsgofish

+3

Приложение My PhoneGap/Cordova 1.7 рушилось на Nexus 7 всякий раз, когда я вводил номер 7 на мягкой клавиатуре, и это исправило это. Благодаря! – Chris

2

У меня была та же проблема. Оказывается, что вам необходимо указать версию Android SDK с помощью числа API в файле config.xml

добавить: <preference name="android-minSdkVersion" value="8" />

+0

Я считаю, что config.xml предназначен только для сборки PhoneGap. Я строю в Eclipse, поэтому у меня нет этого файла. У меня есть minSdkVersion, указанная в AndroidManifest.xml, и она по-прежнему работает неправильно. jmsgofish

0

У меня есть приложение phonegap в eclipse (для android). У меня такая же проблема. Когда я нажал на 7, приложение остановилось, и когда я нажимаю на 9, приложение ничего не делает в компонентах текстовой области. Также возникла проблема с версиями Android 2.2. & 2.3.3. В макете была такая структура, как frame-> frame-> linear layout. А потом я удалил оба фрейма. Я просто использовал линейную компоновку, и тогда проблема решена. Я могу нажать на 7 & 9, и в приложении нет проблем. Я имею в виду, вы должны проверить неиспользуемые компоненты компоновки.

Смежные вопросы