View.OnClickListener, ¿puede explicar?
Lo siento si esta pregunta puede ser estúpido para usted, pero soy nuevo en la programación de Android y no puedo envolver mi cabeza alrededor de la sintaxis de Java.
¿Puedes explicar qué pasa con esta línea de código paso a paso?
- Android AudioRecord clase - proceso de mic audio en vivo rápidamente, configurar la función de devolución de llamada
- ¿Cómo ejecutar una función de Android cada 15 minutos, y específicamente en la marca de 15 minutos todos los días?
- Retardo de cajón de navegación en Android
- Necesita ayuda para OpenGL de Android
- Android Studio: error: carácter ilegal: '\ u2028'
View.OnClickListener ourOnClickListener = new View.OnClickListener() { @Override public void onClick(View v){ ourMessage.setText(“The button got tapped”); } };
- Cómo obtener el número de artículo (posición) de una cadena
- Diseño de la interfaz de usuario de las aplicaciones de Android para que se vea el mismo en todos los modelos de teléfono?
- ¿Cómo saber si una coordenada X e Y están dentro de mi botón?
- Error: Ejecutando el comando 'ant', asegúrate de haber instalado y añadido hormigas a tu ruta de acceso
- Android RealmList <Integer> y RealmList <String>
- Cómo cambiar el archivo de salida de un mediarecorder sin detener el mediarecorder
- Bloqueo de registro de GCM AsyncTask hasta que se produzca el tiempo de espera
- Cómo realizar la implementación personalizada de Retrofit2.Call <T>
Hay una interfaz declarada dentro de la clase View
, y es OnClickListener
, se ve así en View.java
source:
/** * Interface definition for a callback to be invoked when a view is clicked. */ public interface OnClickListener { /** * Called when a view has been clicked. * * @param v The view that was clicked. */ void onClick(View v); }
Normalmente se crearía una clase, y se tendrá que implementar esta interfaz:
public void MyClass implements View.OnClickListener { @Override public void onClick(View view) { // do stuff } }
Pero a veces no necesitas esta clase en un archivo separado. En su lugar, puede crear una clase interna anónima , es como crear nueva clase, que sólo los métodos son los de la interfaz especificada:
new View.OnClickListener() { @Override public void onClick(View v){ ourMessage.setText(“The button got tapped”); } }
A continuación, puede utilizar instancia de esta clase en todas partes la interfaz View.OnClickListener
es necesario.
Lo que también vale la pena mencionar es que la clase interna anónima contendrá una referencia a la clase en la que lo está creando. Así que esto será legal y válido:
public class MyClass { private int clicksCount = 0; private View.OnClickListener listener = new View.OnClickListener() { @Override public void onClick(View view) { clicksCount += 1; } } }
Aquí puede acceder clicksCount
campo clicksCount
, que es campo de MyClass
incluso desde la clase interna que implementa OnClickListener
. Nota lateral: si desea acceder a una variable, debe añadir un modificador final
:
public void testMethod(final int canAccess, int cantAccess) { final String test = otherView.getText().toString(); myView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // Cannot access cantAccess, because it's not final if (test.length == 0) { // can access // do something } } }
- Disposición de Android Los parámetros cambian SÓLO el ancho y la altura
- El archivo Gitignore de Eclipse Git se ignora