13

Androidアプリのメイン画面です。すべてが WebView 内でレンダリングされます。

左下隅にあるボタンを押すと、このオーバーレイが開き、コンテンツが動的に追加されます。

アイコンの 1 つをクリックすると、左側のバーに追加されます。そしてそうです。

しかし、別のアイコンを押しても何も起こりません。呼び出すべき関数が実行されません(alert ()先頭に an を付けて確認しました)。

オーバーレイを閉じて (左上隅のボタン)、もう一度開くと (左下)、別のアイコンを追加できます。ただし、次のイベントは、オーバーレイを閉じてもう一度開くまでトリガーされません。

誰もがこの問題を経験するかどうかわからないので、これがどれほど簡単に修正されるかはわかりません. 私(Android 4.0.4を実行しているSamsung GT-P6200で)はそうです。他の誰かもそれについて私に不平を言いました。ただし、SDK に含まれる Android エミュレーターでは、Android 4.1 および 4.1 ではそのようなことは発生しないようです。4.0の問題のようです。

オーバーレイのアイコンは次のようになります。<div class="appLauncher" onClick="launchApp (' + i + ')"><img src="data:image/png;base64,' + base64 + '" alt="[~]" /><br /><span>' + label + '</span></div>

違いがあれば、jQuery を使用して DOM をいじります。

function launchApp (i)
{
    // Putting an alert () here indicates that the function doesn't get called, because no alert box appears on the screen //
    try
    {
        if (! launcherEdit)
        {
            android.launchAppFromList (i);
        }
        else
        {
            addAppToLauncherFromList (i); // This is what should happen //
        }
    }
    catch (ex)
    {
        handleException (ex);
    }
}

アプリ自体はここにあります。https://play.google.com/store/apps/details?id=be.robinj.ubuntu
ソースコードはここにあります。http://bazaar.launchpad.net/~robinj/be.robinj.ubuntu/trunk/files
これが Javascript ファイルです。http://bazaar.launchpad.net/~robinj/be.robinj.ubuntu/trunk/view/head:/assets/script.js


実際の問題が何であるかを適切に理解せずに、これを「完全な重複」として閉じないでください。以前に何度も発生したように。


この血まみれの混乱は、Android 4.0.4 以前 (またはそのバージョン番号付近) にのみ存在するようです。完全に無視されるのは appLaunchers のクリックのみです。


ここで何らかの接続が見られ始めています...左側のバーにアイテムを追加するjQueryアニメーションが再生された後、常に失敗し始めます。これは、不審に再描画の問題のように見え始めています...


これが関連しているかどうかはわかりませんが、コンソールにポップアップするのを見ました...

02-12 14:30:22.650: E/dalvikvm(3936): JNI ERROR (app bug): attempt to use stale global reference 0xe
02-12 14:30:22.650: E/dalvikvm(3936): VM aborting
02-12 14:30:22.650: A/libc(3936): Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1)
4

4 に答える 4

7

jQuery を使用している場合は、「バインド」イベントを使用してクリック イベントをバインドすることをお勧めします。

例えば:

    <div class="appLauncher" data-id= ' + i + '">
<img src="data:image/png;base64,' + base64 + '" alt="[~]" /><br /><span>' + label + '</span></div>

そして、あなたが使用するjavascriptファイルよりも:

$(".appLauncher").bind("click",function(){
   var i=$(this)attr("data-id");
   launchApp(i);
});

試してみて、それがあなたに役立つかどうか教えてください:)

于 2013-02-11T18:50:17.723 に答える
2

javascriptの人はそれほど多くありませんが、Androidが「1回限りの」トリガーと再利用可能なトリガー(PendingIntents)を明確に区別していることは知っています。.appLaunchのふるまいを何らかの形でインスタンス化している可能性はありますか?

于 2013-02-15T14:05:04.503 に答える
2

問題 19827に見舞われていると思います

この場合、preventDefault(未テスト)への呼び出しを追加してみてください。

$(".appLauncher").bind("click", function(e) {
   e.preventDefault();
   var i = $(this)attr("data-id");
   launchApp(i);
});
于 2013-02-15T16:32:00.710 に答える
1

http://bazaar.launchpad.net/~robinj/be.robinj.ubuntu/trunk/view/head:/assets/script.jsを見ました

スクリプト ファイルで「var scrollable = Array ()」を設定しました。new Array() ではないか、単なる [] ではないか

これが JNI ERROR (アプリのバグ) に関連しているかどうか試してみてください: 失効したグローバル参照 0xe を使用しようとしています

于 2013-02-15T07:22:41.330 に答える