Chcę wykonać pewną metodę B.logic w metodzie Activity.onTouchEvent()
. Działa dobrze dla TextView
i innych nieklikalnych widoków. Jednak nie jest on wywoływany po kliknięciu na Button
. Ale ja też tego potrzebuję.Aktywność onTouchEvent() nie jest wywoływana podczas klikania na przycisk
Oto kod.
public class MainActivity extends Activity {
private static final String TAG = MainActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "Oh shit!! click performed... :(", Toast.LENGTH_LONG).show();
}
});
}
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.d(TAG, "ssssssssssssssssssssssss:touch");
return super.onTouchEvent(event);
}
public boolean dispatchTouchEvent(MotionEvent event) {
int eventaction=event.getAction();
switch(eventaction) {
case MotionEvent.ACTION_MOVE:
break;
default:
break;
}
return super.dispatchTouchEvent(event);
}
}
Proszę mi pomóc rozwiązać ten problem.
Per docs, Activity.onTouchEvent() jest wywoływana tylko „kiedy wydarzenie ekran dotykowy nie był obsługiwany przez którykolwiek z poglądów pod nim ". Ponieważ przycisk zużywa/obsługuje wydarzenie dotykowe, aktywność nie odbiera połączenia. TextView nie pochłaniają zdarzenia kliknięcia. To, co obserwujesz, będzie oczekiwanym zachowaniem. – greg7gkb
Dodałem rozwiązanie poniżej, posługując się metodą Activity.dispatchTouchEvent(). – Noundla