我有一个按钮,在Click上加载另一个活动,但在它加载另一个Activity之前,如果我连续点击它,那么它会启动活动,但同样的活动会被加载两次或更多次。 我在button.setOnClickListener ... onClick之后很快就尝试了button.setEnabled(false) 但是这并没有禁用按钮,我也会在按下按钮后立即记录文本,因此根据我的水龙头,它会记录文本2或3次,即使我已经轻敲了10次。 我在这里感受到的是,在按钮可以收听点击事件之前,我正在快速点击它,以便在我点击它时多次收听所有这些事件。
因此我需要一些按钮可以只听一次然后禁用它的东西。
请帮助
答案 0 :(得分:7)
它的已知问题。基本上你可以设置标志。
int flag=1;
@Override
public void onClick(View v)
{
if(flag)
{
button.setEnabled(false);
Log.d("ins", "called");
}
flag=0;
}
答案 1 :(得分:4)
更优选的解决方案是,
onclick(){
btn.setEnabled(false);
btn.setClickable(false);
//yourwork
myWork();
}
myWork(){
//your tasks.
btn.setEnabled(true);
btn.setClickable(true);
}
答案 2 :(得分:2)
这可以被视为一个android-bug。您的假设是正确的,即点击事件被系统捕获,如果持续点击可点击,则可能提供得太晚。您可以尝试通过插入boolean
这样的
private boolean handledClick = false;
public void onClick(View v){
if (!handledClick){
handledClick = true;
startActivity(...);
}
}
这将确保,即使onClick
被触发超过一次,内部代码也只执行一次......
答案 3 :(得分:0)
我也有类似的问题,但我可以通过使用按钮的button.setEnabled(false)来禁用侦听器的onClick()
回调方法中的按钮。我在包含该按钮的活动的onResume()
,onRestart()
和onWindowFocusChanged()
处启用了该按钮。
我认为这是禁止用户点击按钮(连续)的方法之一。
答案 4 :(得分:0)
如果go指的是您需要的按钮,
go.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// your code here
go.setEnabled(false);
}
});
编辑:既然它还在排队,那怎么样。
s.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
s.setEnabled(false);
if(flag == 1){
flag=0;
//your code here
}
}
});
答案 5 :(得分:0)
我也有同样的问题,这就是我解决它的方法:
int flag = 1;
private OnClickListener btnNextActivity = new OnClickListener(){
public void onClick(View v) {
if(flag){
Intent nextActivity = new Intent(getApplicationContext(),NextActivity.class);
nextActivity.setClassName(". . .",". . ." );
. . .
startActivity(nextActivity);
flag = 0;
}
else{
Show Toast Message Here
}
}
};
答案 6 :(得分:0)
请尝试Button.setEnabled(true/false)
,如下所示:
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (v.isEnabled()) {
v.setEnabled(false);
}
}
});
您还可以通过拨打Button
来检查Button.isEnabled()
是否已启用。
有关Button
Read This…