为什么toast消息被打印两次?

时间:2016-06-10 15:48:18

标签: java android android-button

当我比较duration2duration4的值时,我正在使用的Toast消息正在打印两次,尽管答案/消息是正确的。我不知道为什么会这样。请告诉我如何解决这个问题。

Button b1, b2, b3;
long duration, duration2, duration3, duration4;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    b1=(Button)findViewById(R.id.button1);
    b2=(Button)findViewById(R.id.button2);
    b3=(Button)findViewById(R.id.button3);

    b1.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if(event.getAction()==MotionEvent.ACTION_DOWN) {
                duration=System.currentTimeMillis();
            }
            else if (event.getAction()==MotionEvent.ACTION_UP) {
                duration2= System.currentTimeMillis()-duration;
            }

            return true;
        }
    });
    b2.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if(event.getAction()==MotionEvent.ACTION_DOWN) {
                duration3=System.currentTimeMillis();
            }
            else if (event.getAction()==MotionEvent.ACTION_UP) {
                duration4= System.currentTimeMillis()-duration3;
            }

            if(duration4<duration2) {
                Toast.makeText(getApplicationContext(), "Good", Toast.LENGTH_SHORT).show();
            }
            else if(duration4>duration2) {
                Toast.makeText(getApplicationContext(), "Too Slow Man", Toast.LENGTH_SHORT).show();
            }
            return true;

        }
    });
}

1 个答案:

答案 0 :(得分:0)

因为你在onTouchEvent中烘烤。有一个ACTION_DOWN和一个ACTION_UP。

我想一个简单的解决方法是存储一个布尔值,表示你已经显示了消息并将其添加到持续时间检查周围的if语句