按钮触发仅应调用一次的操作.在执行操作之前,该按钮被禁用并隐藏在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设备的稀有性,不能排除旧设备.
我正在尝试修改页面上的所有链接,以便在单击它们时执行一些额外的工作.
一个简单的方法可能是这样的:
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仅在调用处理程序时进行评估(它包含最后一个链接的值作为此点).
我正在使用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现在在哪里?
我有一个用于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++编译器版本"下拉列表中不可见).
我们的项目使用了几个第三方开源库,其中一些需要自定义修改.
对于每个库,我们创建了自己的本地git存储库,将原始源位置添加为供应商远程,从那里克隆,根据需要进行修改并将其推送到内部远程存储库(让我们称之为源).
然后,这些存储库将用作我们核心项目中的子模块.
问题: "供应商" 远程 URL不会传播到"origin",因此对于克隆内部库存储库的任何人都会丢失.
每次要合并库的新上游更改时,都需要再次查找并手动添加供应商远程(或者使用在开头创建的完全相同的本地存储库,如果它仍然可用).
是否有更好的方法来存储供应商存储库URL,以便每个开发人员可以传播和使用它?向clone_from_here库中添加额外的文件(例如)似乎也不是很优雅.
假设您必须对几个类进行建模,这些类应该具有复合属性,例如尺寸(width和height)或电话号码(prefix,number和extension)。
在Java中(使用JPA 2),我将创建一个Dimensions类并使用对其进行注释@Embeddable。这导致Dimension的字段(例如width和height)被嵌入到每个声明了Dimensions类型的属性的类中。
在避免代码重复的同时,如何使用Django建模?创建一个单独的Dimensions模型并用一个ForeignKey字段引用它是没有意义的。而且这些类没有足够的共同点来证明模型继承的合理性。
在设计课程时,您通常需要做出以下决定:
我已经看到了几个API和框架使用上述之一甚至是不一致的方法,这种方法因类而异.您对该主题有何看法和最佳做法?
xcode ×2
xcode3.2 ×2
android ×1
constructor ×1
cortex-m3 ×1
django ×1
git ×1
indentation ×1
java ×1
javascript ×1
jquery ×1
macros ×1
onclick ×1
oop ×1
python ×1