我在android中使用cordova插件(3.2)时遇到了另一个问题。我为cordova创建了一个自定义插件,因为默认插件与我的期望不符。我希望创建一个自定义警报对话框,其中包含项目和复选框。这是源代码:
使用Javascript:
cordova.exec(
function(listitem) {
console.log("select: " +interestResultName[listitem]);
selectedResult.push(interestResultName[listitem]);
},
function(error) {
alert("Error Occured");
}, "AlertList", "showlistitem", interestResultName );
爪哇:
public class AlertList extends CordovaPlugin {
public AlertList() {
}
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if(action.equals("showlistitem")) {
this.loadList(args, callbackContext);
}
return true;
}
public void loadList(final JSONArray thelist, final CallbackContext callbackContext) {
final CordovaInterface cordova = this.cordova;
Runnable runnable = new Runnable() {
public void run() {
List<String> list = new ArrayList<String>();
for( int x = 0; x < thelist.length(); x++) {
try {
list.add( thelist.getString(x) );
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
CharSequence[] items = list.toArray(new CharSequence[list.size()]);
boolean[] checkbox = new boolean[list.size()];
AlertDialog.Builder builder = new AlertDialog.Builder(cordova.getActivity());
builder.setTitle(" ");
builder.setMultiChoiceItems(items, checkbox, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int item, boolean isChecked) {
// TODO Auto-generated method stub
PluginResult result = new PluginResult(PluginResult.Status.OK, item);
result.setKeepCallback(true);
callbackContext.sendPluginResult(result);
}
});
AlertDialog alert = builder.create();
alert.getWindow().getAttributes().windowAnimations = android.R.style.Animation_Dialog;
alert.show();
}
};
this.cordova.getActivity().runOnUiThread(runnable);
}
}
问题来自onClick方法。由于它是一个复选框,我仍然保持回调打开,直到用户按下后退按钮。但是我不能像往常一样实现后退按钮功能,因为我的java类扩展了CordovaPlugin而不是Activity。有没有人可以帮我这个?
我的期望是:用户选择他想要的项目后,点击后退按钮。然后回调上下文将所选项发送到我的javascript函数(代码:selectedResult.push(interestResultName [listitem]);)。
谢谢,
HARY