防止多次点击

时间:2012-12-19 09:32:25

标签: android

这是我的自定义视图代码。我试图阻止对此EditText的多次点击,但它仍然打开两个EditStatusActivity屏幕。为什么呢?

    setOnClickListener(new OnClickListener() {          
        @Override
        public void onClick(final View v) {
            if(isClicked) {
                return;
            }               
            isClicked = true;
            setEnabled(false);
            setClickable(false);

            final Intent intent = new Intent(activity, EditStatusActivity.class);               
            intent.putExtra(STATUS, currentStatus);
            activity.startActivityForResult(intent, EDIT_STATUS_REQUEST_CODE);

            isClicked = false;
            setEnabled(true);
            setClickable(true);
        }
    });

3 个答案:

答案 0 :(得分:7)

在onActivityResult方法

上重置isClicked和setEnabled
 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        super.onActivityResult(requestCode, resultCode, data);         
        isClicked = false;
        setEnabled(true); 
    }

正如pablochan所写:

  

startActivityForResult方法是非阻止的。这意味着   一旦你开始EditStatusActivity,你立即设置   isClickable变量为false,这就是您能够制作的原因   额外点击。

您应该永远不要将isClickable设置为true,或者在onActivityResult方法中将其设置为true。

答案 1 :(得分:0)

startActivityForResult方法是非阻止的。这意味着只要您启动EditStatusActivity,就会立即将isClickable变量设置为false,这就是您可以进行额外点击的原因。

您应该在第一次点击后永远不要将isClickable设置为true,或者在onActivityResult方法中将其设置为true。

答案 2 :(得分:0)

我还有一个选择。

处理Click事件时删除侦听器并将其恢复为onResume。