2015-03-16 2 views
0

Я не могу понять, как получить данные с JAVA на javascript, чтобы я мог обновить интерфейс с помощью Cordova на Android. вот две кнопки, поскольку они нажаты, они увеличивают счетчик позиции, который я хочу вернуть в пользовательский интерфейс, и обновить экран, но не могу понять, как его вернуть.Cordova PhoneGap Android Callback с данными

Я думал, что могу просто добавить switchPos в обратный вызов, но, похоже, он не забирает его нигде в javascript, я планировал записать значение в пользовательский интерфейс с инструкцией «.innerHTML =».

Это плагин javascript.

cordova.define(‘myplugin', function (require, exports, module) { 
    module.exports = { 

    switch1: function (success, failure) { 
    cordova.exec(success, failure, “MyPlugin", “switch1”, []); 
    }, 

    switch2: function (success, failure) { 
    cordova.exec(success, failure, “MyPlugin", “switch2”, []); 
    } 


    }; 
}); 

Это javascript который вызывает их.

var myplugin = cordova.require('myplugin'); 

var myapp = { 

appButton1: function(){ 
    myplugin.switch1(); 
}, 

appButton2: function(){ 
    myplugin.switch2(); 
} 

}; 

Вот код JAVA для плагина.

public class MyPlugin extends CordovaPlugin { 

// actions 
private static final String SWITCH1 = “switch”1; 
private static final String SWITCH2 = “switch”2; 

// callbacks 
private CallbackContext connectCallback; 

// Switch Counters 
public static int switchPos1 = 1; 
public static int switchPos2 = 1; 


@Override 
public boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) throws JSONException { 

    boolean validAction = true; 

    if (action.equals(SWITCH1)) { 
    Log.d("Valid Action = SWITCH1 Pos: “ + switchPos1); 
    switchPos1++; 
    callbackContext.success(switchPos1); 

} else if (action.equals(SWITCH2)) { 
    Log.d("Valid Action = SWITCH2 Pos: “ + switchPos2); 
    switchPos2++; 
    callbackContext.success(switchPos2); 

} else { 
    validAction = false; 
} 

return validAction; 

} 

} 

ответ

2

при вызове плагина вы должны пройти успех и неисправности:

var myplugin = cordova.require('myplugin'); 

var myapp = { 

appButton1: function(){ 
    myplugin.switch1(function(data){alert(data);},function(error){alert(error);}); 
}, 

appButton2: function(){ 
    myplugin.switch2(function(data){alert(data);},function(error){alert(error);}); 
} 

}; 
0

вы можете попробовать как этот

Во-первых, вам нужно объявить свой собственный плагин в config.xml. Вы можете найти этот файл в папке res> xml.

<feature name="CustomPlugin"> 
     <param name="android-package" value="com.Phonegap.CustomPlugin" /> 
</feature> 

Затем вам нужно реализовать плагин с помощью Java- кода

public class CustomPlugin extends CordovaPlugin { 

    @Override 
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) 
      throws JSONException { 

     if (action.equals("sayHello")){ 
      try { 
       String responseText = "Hello world, " + args.getString(0); 
       callbackContext.success(responseText); 
      } catch (JSONException e){ 
       callbackContext.error("Failed to parse parameters"); 
      } 
      return true; 
     } 

     return false; 
    } 
} 

Наконец вызова плагина из JavaScript

function initial(){ 
    var name = $("#NameInput").val(); 
    cordova.exec(sayHelloSuccess, sayHelloFailure, "CustomPlugin", "sayHello", [name]); 
} 

function sayHelloSuccess(data){ 
    alert("OK: " + data); 
} 

function sayHelloFailure(data){ 
    alert("FAIL: " + data); 
} 
Смежные вопросы