2

コードは次のとおりです。

        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をクリックすると、2つ、3つ、または4つのAlertDialogが開くことを除けば、すべてうまく機能します。なんで?どうすれば1つだけ開くことができますか?

4

2 に答える 2

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();
            }
        }
    });
于 2013-03-09T19:07:17.027 に答える
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;
    }
});
于 2013-03-09T19:19:38.977 に答える