代码如下:

        textView1.setOnTouchListener(new View.OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            String content = textView1.getText().toString();
            if (!content.equals("")){
                showNameDialog();
            }
            return true;
        }
    });

很简单。如果字符串内容中有文本,则执行shownamedilog()方法。
方法如下:
    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时,它会打开两个、三个或四个警报对话框。为什么?我怎么能只打开一个?

最佳答案

触摸不是点击,所以我假设在触摸视图时可以多次调用on touch(在触摸下,然后触摸上,等等)。请尝试使用onclicklistener:

textView1.setClickable (true);
textView1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            String content = textView1.getText().toString();
            if (!content.equals("")){
                showNameDialog();
            }
        }
    });

07-27 14:54