Java 活动中的更新模式,Android Studio

Java 活动中的更新模式,Android Studio,java,android,android-studio,Java,Android,Android Studio,我试图在活动中创建一个菜单按钮,让用户更新内容。在第二次单击它之后,它应该离开更新模式 在我的程序中发生的情况是,在关闭更新模式的情况下,我仍然在单击diagnosticCodeView时听到“声音”(我认为这是因为onClick方法仍然被覆盖)。有没有办法消除这种声音 TextView diagnosticCodeView; AlertDialog dialog; EditText editText; @Override public boolean

我试图在活动中创建一个菜单按钮,让用户更新内容。在第二次单击它之后,它应该离开更新模式

在我的程序中发生的情况是,在关闭更新模式的情况下,我仍然在单击diagnosticCodeView时听到“声音”(我认为这是因为onClick方法仍然被覆盖)。有没有办法消除这种声音

    TextView diagnosticCodeView;
    AlertDialog dialog;
    EditText editText;

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {

            case R.id.updateReport:
                if(!isEditing) {
                    Snackbar.make(diagnosticCodeView, "Editing mode on", Snackbar.LENGTH_LONG)
                            .setAction("Action", null).show();

                    diagnosticCodeView = findViewById(R.id.diagnosticCodeView);
                    dialog = new AlertDialog.Builder(this).create();
                    editText = new EditText(this);

                    dialog.setTitle(" Edit text ");
                    dialog.setView(editText);

                    dialog.setButton(DialogInterface.BUTTON_POSITIVE, "Save text", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            diagnosticCodeView.setText(editText.getText());
                        }
                    });

                    diagnosticCodeView.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            editText.setText(diagnosticCodeView.getText());
                            dialog.show();
                        }
                    });

                    isEditing = true;
                }
                else {
                    Snackbar.make(diagnosticCodeView, "Editing mode off", Snackbar.LENGTH_LONG)
                            .setAction("Action", null).show();

                    isEditing = false;
                }
                return true;

    ...

将侦听器设置为null就足够了:

else {
    Snackbar.make(diagnosticCodeView, "Editing mode off", 
    Snackbar.LENGTH_LONG).setAction("Action", null).show();

    diagnosticCodeView.setOnClickListener(null);
    isEditing = false;
}