2012-01-16 2 views
0

Я делаю Приложение для мобильного телефона Android с использованием Phonegap v1.3. Я написал плагин для phonegap, который получает конкретный файл из системы, а затем выполняет функцию js.
Поскольку все плагины расширяют класс Phonegap Плагин, я не могу выполнить функцию js непосредственно оттуда. поэтому из выполнить функции плагина, я исполняю ->Выполнение функций JS из Android-плагина Phonegap

PluginResult result = null; 
Home home = new Home(); 
result = new PluginResult(Status.OK); 
home.loadPage("pic.jpg"); 

В этом главном моем основном классе, который расширяет Droidgap.
В доме у меня есть функция loadPage

public void loadPage(String filePath){ 
super.setIntegerProperty("loadUrlTimeoutValue", 60000); 
super.loadUrl("javascript:navigator.somefunc(\""+filePath+"\");"); 
} 

Проблема заключается в том, что setIntegerProperty функция DroidGap бросает NPE. Вот журналы.

01-16 11:41:32.364: W/System.err(13162): java.lang.NullPointerException 
01-16 11:41:32.364: W/System.err(13162): at com.phonegap.DroidGap.setIntegerProperty(DroidGap.java:738) 
01-16 11:41:32.364: W/System.err(13162): at e2o.mobile.Home.loadSharePage(Home.java:120) 
01-16 11:41:32.364: W/System.err(13162): at com.phonegap.plugins.checkImage.CheckUploadImage.execute(CheckUploadImage.java:158) 
01-16 11:41:32.364: W/System.err(13162): at com.phonegap.api.PluginManager$1.run(PluginManager.java:150) 
01-16 11:41:32.364: W/System.err(13162): at java.lang.Thread.run(Thread.java:1019) 

Bascically в функции setIntegerProperty -

public void setIntegerProperty(String name, int value) { 
    this.getIntent().putExtra(name, value); 
} 

this.getIntent() возвращается нуль. может у вас рассказать мне, что мне не хватает. Или в моем сценарии использования, как я могу выполнить эту функцию js. Если я не использую

super.setIntegerProperty("loadUrlTimeoutValue", 60000, intent); 

тогда и loadUrl ничего не делает. JS не вызван, или он истекает.

ответ

2

Это потому, что вы создаете новый объект Home. Объект создается с помощью конструктора, но метод onCreate не вызывается, поэтому много правильной настройки объекта не происходит. Вот почему вы получаете исключение NullPointerException.

Вы возвращаете новый PluginResult со статусом OK, поэтому функция успеха может выполнить метод navigator.somefunc (filePath) для вас. Это будет намного проще.

+0

Да, я следовал неправильному подходу. функция успеха должна выполнять функцию js. теперь работает отлично. :) – ghostCoder