0

これは、カスタムビューのコードです。このEditTextが複数回クリックされないようにしようとしていますが、それでも2つの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);
        }
    });
4

3 に答える 3

7

onActivityResultメソッドでisClickedANDsetEnabledをリセットします

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

pablochanが書いたように:

このstartActivityForResult方法はノンブロッキングです。つまり、を開始するEditStatusActivityとすぐに変数をfalseに設定する isClickableため、追加のクリックを行うことができます。

メソッドisClickableでtrueに設定したり、trueに設定したりしないでください。onActivityResult

于 2012-12-19T09:37:24.540 に答える
0

このstartActivityForResult方法はノンブロッキングです。つまり、EditStatusActivityを開始するとすぐに、isClickable変数をに設定しfalseます。そのため、追加のクリックを行うことができます。

isClickable最初のクリック後にtrueに設定しないか、 onActivityResultメソッドでtrueに設定する必要があります。

于 2012-12-19T09:42:57.947 に答える
0

私が好むもう1つのオプションがあります。

Clickイベントを処理するときは、リスナーを削除して、onResumeに復元します。

于 2012-12-19T09:49:03.760 に答える