2011-07-06 27 views
9

Utilicé este código, pero cuando hago clic en actividad en tiempo de ejecución, nunca golpea en el método OnTouch(). ¿Alguien puede guiarme por lo que estoy haciendo mal? ¿Debería configurar una vista de contenido de esta actividad? En realidad quiero las coordenadas de la actividad donde el usuario toque durante la ejecución.OnTouchListener en Activity never calls

public class TouchTestAppActivity extends Activity implements OnTouchListener 
{ 

    @Override 
public void onCreate(Bundle savedInstanceState) 
     { 
     super.onCreate(savedInstanceState); 
     //setContentView(R.layout.touch); 
     } 

    @Override 
public boolean onTouch(View arg0, MotionEvent arg1) 
     { 
     // TODO Auto-generated method stub 
     String test = "hello"; 
     } 
} 

Respuesta

2

Debe onTouchListener a los componentes relevantes de la GUI.

Por ejemplo:

public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.touch); 
     TextView someView = (TextView)findViewById(R.id.some_view_from_layout_xml); 
     someView.setOnTouchListener(this); // "this" is the activity which is also OnTouchListener 
    } 
1

En onCreate, debe configurar la vista de contenido (solo descomentando la segunda línea probablemente debería funcionar) y entonces usted necesita para establecer su OnTouchListener (su actividad) como el onTouchListener de una vista en tu aplicación.

Digamos que tiene una vista en su diseño llamada "MainView"; se vería algo como esto:

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     View view = findViewById(R.id.MainView); 
     view.setOnTouchListener(this); 
    } 

Este artículo tiene un buen ejemplo: http://www.zdnet.com/blog/burnette/how-to-use-multi-touch-in-android-2-part-2-building-the-touch-example/1763

2

Hay que añadir un oyente utilizando setOnTouchListener() de otro modo, que dará llamada a su método onTouch. cualquier oyente trabaja en cualquier vista. así que hay que añadir al oyente a la vista, por ejemplo button.setOnTouchListener(this);

LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View vi = inflater.inflate(R.layout.yourxml, null); 
setCOntentView(vi); 
vi.setOnTouchListener(this); 
12

ACTUALIZACIÓN:

Es necesario hacer esto:

  • En el archivo del formato XML, es necesario un ID para la raíz Ver: android:id="@+id/myView"
  • En el método youer onCreate(), escribir lo siguiente:

    LinearView v= (LinearView) findViewById(R.id.myView); 
    v.setOnTouchListener(this); 
    

Suponiendo que su raíz es una vista LinearView

+0

No hay tal método. – MByD

+0

lo siento. 'setOnTouchListener (this)' – iTurki

+0

Tampoco existe tal método para la actividad ... – MByD