防止多次点击

eme*_*ieu 0 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);
        }
    });
Run Code Online (Sandbox Code Playgroud)

Kan*_*mal 7

在onActivityResult方法上重置isClicked和setEnabled

 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        super.onActivityResult(requestCode, resultCode, data);         
        isClicked = false;
        setEnabled(true); 
    }
Run Code Online (Sandbox Code Playgroud)

正如pablochan写道:

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

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

  • 你刚刚复制了我的答案吗?那不是很酷的人. (2认同)