为什么在setOnTouchListener之后不能正常工作(Android)

时间:2018-11-20 11:17:51

标签: java android android-studio

为什么setOnTouchListener之后的订单不起作用?

例如:

public class MainActivity extends AppCompatActivity implements View.OnTouchListener {
    public RelativeLayout MYLL=null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MYLL=(RelativeLayout) findViewById(R.id.MYL);
        Toast.makeText(getApplicationContext(), "Begin", Toast.LENGTH_SHORT).show();
        MYLL.setOnTouchListener(this);
        Toast.makeText(getApplicationContext(), "End", Toast.LENGTH_SHORT).show();
    }
    public boolean onTouch(View v, MotionEvent event) {

        Toast.makeText(getApplicationContext(), "In", Toast.LENGTH_SHORT).show();
        return false;//or true 
    }


}

激活后setOnTouchListener查看消息“在” 但是为什么在消息“ In”之后不跟随其他消息“ End”(In-> End)呢?

2 个答案:

答案 0 :(得分:1)

在示例开头,OnCreate被调用一次。 显示Toast“开始”,设置OnTouchListener,然后显示Toast“结束”。

在设置每个Touch之后,将在每个Touch上调用OnTouchListener,而不是在首次设置时调用。 如果希望在“ In” Toast之后调用“ End” Toast,则需要在“ In” Toast之后从OnTouchListener内部显示Toast。

答案 1 :(得分:0)

当不是每次创建活动时,End只会显示一次,但是您触摸该视图时,In就会显示多次,如果您想在In每次显示时都显示End,则在In后面放上吐司,否则明智的End将仅显示一次,即onCreate()。