java - 活动中的更新模式,Android Studio
问题描述
我正在尝试在活动中制作一个菜单按钮,让用户更新内容。第二次点击后,应该会退出更新模式。
在我的程序中发生的情况是,在关闭更新模式的情况下,单击 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;
}
推荐阅读
- java - IDEA maven依赖包下载不了
- mysql - 带有 WHERE 条件的 MySQL 子查询
- json - JSONDecodeError:期望值:Keras+Rest API 应用程序的第 1 行第 1 列(字符 0)
- node.js - 我可以在单核系统上的子进程中 fork node.js 进程以避免阻塞事件循环
- ios - iOS 相机应用程序的 Facebook 评论
- java - 无法生成 application.xml
- python - 烧瓶重定向(urlfor())为什么不起作用?
- r - 从命名向量 -rlang 问题将数据集和列参数添加到函数中
- c# - 使用被引用项目引用的项目类
- python - 如何使进度条工作,它冻结窗口