这是Android应用的主屏幕。一切都在WebView中呈现
当我点击左下角的按钮时,此叠加层会打开,其内容会动态添加到其中
当我点击其中一个图标时,它应该被添加到左侧的栏中。它确实如此
当我点击另一个图标时,根本没有任何事情发生。它应该调用的函数不会运行(我通过在其开头放置一个alert ()
来检查。)
当我关闭叠加层(左上角的按钮),再次打开它(左下角)时,我可以添加另一个图标。但同样,在覆盖关闭并再次打开之前,下一个事件不会触发。
我不知道修复会有多容易,因为我不确定每个人是否都会遇到这个问题。我(在运行Android 4.0.4的三星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)
答案 0 :(得分:6)
如果您使用jQuery而不是更好地使用“ bind ”事件来绑定您的点击事件。
例如:
<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);
});
尝试并告诉我它是否对您有所帮助:)
答案 1 :(得分:2)
不是一个javascript人,但我知道Android明确区分了“一次性”触发器和可重用触发器(PendingIntents)。是否有可能以某种方式实例化一个关于.appLaunch的行为?
答案 2 :(得分:2)
我想你被issue 19827
击中了在这种情况下,请尝试添加对preventDefault
(未测试)
$(".appLauncher").bind("click", function(e) {
e.preventDefault();
var i = $(this)attr("data-id");
launchApp(i);
});
答案 3 :(得分:1)
我看了http://bazaar.launchpad.net/~robinj/be.robinj.ubuntu/trunk/view/head:/assets/script.js
您已在脚本文件中设置“var scrollable = Array()”。不应该是新的Array()或只是普通的[]
试试这是否与您的JNI错误(应用程序错误)有关:尝试使用陈旧的全局引用0xe