1

我无法使 Android phonegap 插件工作。甚至没有一个我发现的例子,也没有我试图自己创建一个的可悲失败。我第一次尝试使用这样的教程。他们不适合我。我总是以Cannot call method of undefined错误告终。

所以我尝试了一些准备好的东西。从 github得到这个项目。这只是一个显示敬酒的简单插件。我检查了我在教程中学到的所有内容:

//the package name in the java
package com.phonegap.toast;

//my class extends Plugin and has a simple show toast method.

public class Tutorial extends Plugin {
@Override
public PluginResult execute(String cmd, JSONArray args, String callback) {
    if(cmd.equals("toast"))
    {
        return showToast(args);
    }
    return null;
}

private PluginResult showToast(JSONArray args) {
    final String message;
    try {
        message = args.getString(0);
        ctx.runOnUiThread(new Runnable()
        {
            public void run() {
                Toast myToast = Toast.makeText(ctx, message, Toast.LENGTH_SHORT);
                myToast.show();
            }
        });

        return new PluginResult(PluginResult.Status.OK);
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return new PluginResult(PluginResult.Status.JSON_EXCEPTION);
    }       
}   

}

该插件在 res/xml/plugins.xml 中定义

plugin name="Tutorial" value="com.phonegap.toast.Tutorial"

不,如果我把它放在 rex/xml/config.xml 它也不起作用

最后,调用插件的方法:

function createToast() {
  // i also tried window.Tutorial.showToast('Hello AndroidOpen'); with no success
  window.plugins.Tutorial.showToast('Hello AndroidOpen');
}

在这里我再次遇到同样的错误。

10-22 15:39:07.770: E/Web Console(2885): Uncaught TypeError: Cannot call method 'showToast' of undefined at file:///android_asset/www/main.js:123

任何开明的灵魂都可以向我解释我做错了什么?几天来我一直在尝试这个,有很多不同的插件,包括我自己的,甚至是这个,我不知道它是什么。

4

1 回答 1

2

好的,这里有几件事可能会让你绊倒。首先,如果 config.xml 文件存在于 res/xml 中,那么它将优先于 plugins.xml。因此,您需要将插件行添加到 config.xml 中。

确保包含 Toast 插件的 .js 文件。

第三,window.plugins 已被弃用,因此如果您使用的是 PhoneGap 2.0.0 或更高版本,您可能需要修改 .js。查看我关于该主题的博客文章。根本变化是您现在需要在 JS 中添加新的 PluginName,因为默认情况下它不再放在 window.plugins 中。

于 2012-10-22T18:13:57.847 回答