小编rlu*_*uba的帖子

Android:阻止按钮上的多个onClick事件(已被禁用)

按钮触发仅应调用一次的操作.在执行操作之前,该按钮被禁用并隐藏在onClick处理程序中:

someButton.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        someButton.setEnabled(false);
        someButton.setClickable(false);
        someButton.setVisibility(View.GONE);
        performTaskOnce();
        }
    });

private void performTaskOnce() {
    Log.i("myapp", "Performing task");
    //Do something nontrivial that takes a few ms (like changing the view hierarchy)
}
Run Code Online (Sandbox Code Playgroud)

即使按钮立即被禁用,仍然可以通过非常快速地多次敲击来触发多个"onClick"事件.(即被performTaskOnce多次调用).似乎onClick事件在实际禁用按钮之前排队.

我可以通过检查每个onClick手柄来解决问题,相应的按钮是否已被禁用,但这似乎是一个黑客攻击.有没有更好的方法来避免这个问题?

问题出现在Android 2.3.6上,我无法在Android 4.0.3上重现它.但鉴于4.x设备的稀有性,不能排除旧设备.

java user-interface android

19
推荐指数
2
解决办法
2万
查看次数

JavaScript:添加onClick处理程序而不覆盖现有处理程序

我正在尝试修改页面上的所有链接,以便在单击它们时执行一些额外的工作.

一个简单的方法可能是这样的:

function adaptLinks()
{
    var links = document.getElementsByTagName('a');
    for(i = 0; i != links.length; i++)
    {
        links[i].onclick = function (e)
        {
            <do some work>
            return true;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是一些链接已经有一个应该保留的onClick处理程序.我尝试了以下方法:

function adaptLinks()
{
    var links = document.getElementsByTagName('a');
    for(i = 0; i != links.length; i++)
    {
        var oldOnClick = links[i].onclick;
        links[i].onclick = function (e)
        {
            if(oldOnClick != null && !oldOnClick())
            {
                return false;
            }
            <do some work>
            return true;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为oldOnClick仅在调用处理程序时进行评估(它包含最后一个链接的值作为此点).

javascript jquery onclick

17
推荐指数
2
解决办法
2万
查看次数

XCode 3.2:更改默认的"Code Sense"缩进和空格

我正在使用XCode 3.2(在"Snow Leopard"上),它仍然具有这个漂亮的"文本宏"自动完成功能(例如,如果你键入if它将扩展到if (<#condition#>) { <#statements#> }).这些宏也可通过"编辑 - >插入文本宏"获得.

不幸的是,默认模板与我心爱的缩进和空白样式不匹配,所以我想修改它们.

根据这个稍微过时的StackOverflow线程,相应的定义应该位于/Developer/Library/Xcode/Specifications/{C,HTML}.xctxtmacro但我找不到任何使用Snow Leopard和XCode 3.2的东西(不确定哪个负责).

有没有人注意到Apple定义的Text Macros现在在哪里?

macros xcode indentation osx-snow-leopard xcode3.2

11
推荐指数
1
解决办法
2587
查看次数

将自定义编译器添加到XCode 3.2

我有一个用于ARM Cortex-m3的工作gcc 4.3.3工具链,并希望将其集成到XCode中.

有没有办法设置XCode(3.2)来使用这个gcc工具链而不是内置的GCC 4.2?

到目前为止我尝试过:我添加了修改后的副本GCC 4.2.xcplugin并更改了名称,版本和可执行文件路径.它出现在XCode中,但每当我将"C/C++编译器版本"设置为自定义编译器时,它都会失败

GCC_VERSION的值"4.3.3"无效

似乎有效版本号在其他地方被硬编码,因为即使我删除原始版本GCC 4.2.xcplugin,该值4.2仍然有效(但在"C/C++编译器版本"下拉列表中不可见).

xcode cortex-m3 cross-compiling xcode3.2

7
推荐指数
1
解决办法
7567
查看次数

通过克隆/推/拉传播远程位置

我们的项目使用了几个第三方开源库,其中一些需要自定义修改.

对于每个库,我们创建了自己的本地git存储库,将原始源位置添加为供应商远程,从那里克隆,根据需要进行修改并将其推送到内部远程存储库(让我们称之为).

然后,这些存储库将用作我们核心项目中的子模块.

问题: "供应商" 远程 URL不会传播到"origin",因此对于克隆内部库存储库的任何人都会丢失.

每次要合并库的新上游更改时,都需要再次查找并手动添加供应商远程(或者使用在开头创建的完全相同的本地存储库,如果它仍然可用).

是否有更好的方法来存储供应商存储库URL,以便每个开发人员可以传播和使用它?向clone_from_here库中添加额外的文件(例如)似乎也不是很优雅.

git vendor-branch

7
推荐指数
1
解决办法
262
查看次数

Django:复合字段或嵌入式类(例如JPA)?

假设您必须对几个类进行建模,这些类应该具有复合属性,例如尺寸widthheight)或电话号码prefixnumberextension)。

在Java中(使用JPA 2),我将创建一个Dimensions类并使用对其进行注释@Embeddable。这导致Dimension的字段(例如widthheight)被嵌入到每个声明了Dimensions类型的属性的类中。

在避免代码重复的同时,如何使用Django建模?创建一个单独的Dimensions模型并用一个ForeignKey字段引用它是没有意义的。而且这些类没有足够的共同点来证明模型继承的合理性。

python django django-models

3
推荐指数
1
解决办法
711
查看次数

构造函数:完全成熟还是最小化?

在设计课程时,您通常需要做出以下决定:

  • 提供一个"完整"构造函数,它将所有必需字段的初始值作为参数:使用笨拙但保证完全初始化和有效的对象
  • 为所有必要字段提供"默认"构造函数和访问器:有时可能很方便,但不保证在调用某些关键方法之前所有成员都已正确初始化.
  • 混合方法(更多代码,更多工作,可以'消除"未完全初始化"的问题)

我已经看到了几个API和框架使用上述之一甚至是不一致的方法,这种方法因类而异.您对该主题有何看法和最佳做法?

language-agnostic oop constructor

2
推荐指数
1
解决办法
476
查看次数