Desidero eseguire alcune operazioni con B.logic nel metodo Activity.onTouchEvent()
. Funziona perfettamente per TextView
e altre visualizzazioni non selezionabili. Tuttavia, non viene chiamato overclicking di Button
. Ma ho bisogno anche di questo.L'attività di onTouchEvent() non viene chiamata mentre si fa clic sul pulsante
Ecco il codice.
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);
}
}
Please help me per risolvere da questo.
Per la documentazione, Activity.onTouchEvent() viene chiamato solo "quando un evento touch screen non era gestito da una qualsiasi delle viste sotto di essa ". Poiché il tuo pulsante consuma/gestisce l'evento touch, l'attività non riceve la chiamata. Le TextView non consumano l'evento click. Quello che stai osservando sarebbe il comportamento previsto. – greg7gkb
Ho aggiunto la soluzione seguente gestendo il metodo Activity.dispatchTouchEvent(). – Noundla