1

ボイラープレート HTML と次の JavaScript のみを含むアプリケーションでTrigger.io のバーコード APIを使用する:

forge.barcode.scan(function (value) {
    alert("You scanned: "+value);
});

ログに次のエラーが表示されます。

Forge Java エラー: RuntimeException: Looper.prepare() を呼び出していないスレッド内でハンドラーを作成できません

完全なエラー エントリ:

[INFO] D/Forge (1109): 返されました: {"content":{"message":"Forge Java エラー: RuntimeException: Looper.prepare() を呼び出していないスレッド内でハンドラーを作成できません","type" :"UNEXPECTED_FAILURE","subtype":null,"full_error":"java.lang.RuntimeException: Android.os.Handler.(Handler.java: 197) android.os.Handler.(Handler.java:111) android.app.Dialog.(Dialog.java:107) android.app.AlertDialog.(AlertDialog.java:114) android.app.AlertDialog $Builder.create(AlertDialog.java:931) で android.app.AlertDialog$Builder.show(AlertDialog.java:950) で io.trigger.forge.android.modules.barcode.API.scan(API.java:68) ) java.lang.io.trigger.forge.android.core.ForgeApp.callJavaFromJavaScript(ForgeApp.java:247) の java.lang.reflect.Method.invoke(Method.java:511) での Reflect.Method.invokeNative(ネイティブ メソッド)。 trigger.forge.android.core.ForgeJSBridge$1.run(ForgeJSBridge.java:17) で java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) で java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor) .java:573) at java.lang.Thread.run(Thread.java:856)\n"},"callid":"35E46BC5-1C17-4354-B09B-BE67B5FCD513","status":"error"}ForgeJSBridge$1.run(ForgeJSBridge.java:17) で java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) で java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) で java. lang.Thread.run(Thread.java:856)\n"},"callid":"35E46BC5-1C17-4354-B09B-BE67B5FCD513","ステータス":"エラー"}ForgeJSBridge$1.run(ForgeJSBridge.java:17) で java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) で java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) で java. lang.Thread.run(Thread.java:856)\n"},"callid":"35E46BC5-1C17-4354-B09B-BE67B5FCD513","ステータス":"エラー"}

アップデート:

以下は私のコードです:

ファイルconfig.json

{
    "config_version": "2",
    "name": "Scan to Web",
    "author": "email@email.com",
    "version": "0.1",
    "platform_version": "v1.4",
    "description": "An empty app created by default",
    "modules": {
        "logging": {
            "level": "DEBUG"
        },
        "barcode": true,
        "contact": true,
        "file": true,
        "is": true,
        "media": true,
        "prefs": true,
        "request": {
            "permissions": ["http://*/*", "https://*/*"]
        },
        "tools": true,
        "reload": true
    }
}

ファイルdefault.js

forge.barcode.scan(function (value) {
    alert("You scanned: "+value);
});

ファイルindex.html

<!DOCTYPE html>
<html>
    <head>
    <title>Hello World!</title>
    <link rel="stylesheet" href="css/jquery.mobile-1.1.0.min.css" />
    <script src="js/jquery-1.7.1.min.js"></script>
    <script src="js/jquery.mobile-1.1.0.min.js"></script>
    <script type="text/javascript" src="js/main.js"></script>
    <script type="text/javascript" src="js/default.js"></script>
</head>
<body>

    <p>Hello world!</p>

</body>
</html>
4

3 に答える 3

3

次の 2 つのいずれかを試してください。

1) アプリの構成で Reload モジュールをオンにします。奇妙でばかげているように聞こえるかもしれませんが、私を信じてください。これで問題は解決するはずです。リロードがオフの場合、リクエストモジュールで非常によく似た問題が発生しました。

2) src/config.json の「platform_version」を「v1.4」から「v1.4.25」に変更します。最後のプラットフォーム バージョンは少し壊れていると思います。

于 2013-01-19T19:41:15.157 に答える
1

Trigger.io バージョン v1.4.26 にはスレッド化の問題がありました。これはv1.4.27以降で修正されています。

ご不便おかけしてすみません!

于 2013-02-26T17:58:14.240 に答える
0

この例外は通常、UI スレッド以外のスレッドから UI 関連のコードを呼び出している場合に発生します。これが Java の場合、次を使用します。

activity.runOnUiThread(new Runnable()
{
    @Override
    public void run()
    {
        // place your code here
    }
});
于 2013-01-19T19:45:28.907 に答える