以下是代码:
textView1.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
String content = textView1.getText().toString();
if (!content.equals("")){
showNameDialog();
}
return true;
}
});
非常简单。如果字符串内容中包含文本,则执行showNameDialog()方法。
以下是方法:
private void showNameDialog() {
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(MainActivity.this);
dialogBuilder.setTitle(name.toString().toUpperCase());
dialogBuilder.setMessage("Name's frequency: " + arrayListToString);
dialogBuilder.setPositiveButton("ok", null);
AlertDialog alertDialog = dialogBuilder.create();
alertDialog.show();
}
这一切都运行得很好,除了当我点击textView1时,它会打开两个,三个或四个AlertDialogs。为什么?我怎样才能让它只打开一个?
答案 0 :(得分:4)
触摸不是点击,所以我假设在触摸视图时可以多次调用onTouch(触摸下来,然后触摸等)。而是尝试使用OnClickListener:
textView1.setClickable (true);
textView1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String content = textView1.getText().toString();
if (!content.equals("")){
showNameDialog();
}
}
});
答案 1 :(得分:3)
尝试使用此代码
textView1.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
String content = textView1.getText().toString();
if(event.getAction() == MotionEvent.ACTION_DOWN){
if (!content.equals("")){
showNameDialog();
}
}
return true;
}
});