1

Androidのphonegapプラグインを機能させることができません。私が見つけた例の1つでも、自分で作成しようとした私の哀れな失敗でもありません。私は最初にこのようなチュートリアルを試しました。彼らは私のために働きません。私はいつも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ファイルが含まれていることを確認してください。

第3に、window.pluginsは非推奨になっているため、PhoneGap 2.0.0以降を使用している場合は、.jsを変更する必要があります。トピックに関する私のブログ投稿をチェックしてください。基本的な変更は、デフォルトでwindow.pluginsに配置されなくなったため、JSで新しいPluginNameを作成する必要があることです。

于 2012-10-22T18:13:57.847 に答える