2011-12-03 17 views
8

Estoy haciendo el más simple de los modelos onClick y no puedo hacer que el método onClick se dispare. Sé que es algo simple, y soy nuevo en Android. Cualquier ayuda es apreciada.método onClick no llamado en Android

package com.bordeloniphone.timeentry; 

import android.app.Activity; 
import android.os.Bundle; 

import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.Toast; 

public class TimeEntryActivity extends Activity implements OnClickListener{ 
    /** Called when the activity is first created. */ 

    Button okButton; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     okButton = (Button) findViewById(R.id.btnOK); 
     okButton.setText(":)"); 
     okButton.setOnClickListener(this); 
     //setContentView(okButton); 

    } 

    public void onClick(View v) { 
     Log.d("TEST", "TEST"); 
     Toast.makeText(this, "TEST", Toast.LENGTH_SHORT).show(); 

    } 

} 

Aquí es el main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <Button 
     android:id="@+id/btnOK" 
     android:layout_width="80dp" 
     android:layout_height="wrap_content" 
     android:text="OK" /> 

</LinearLayout> 
+0

Copié/pegué su código exacto en un nuevo proyecto y funcionó. Obtengo la entrada de brindis y LogCat. ¿Qué te hace pensar que no está funcionando? – kabuko

+0

Tu código funciona bien para mí ... Comprueba después de limpiar y crea tu proyecto ... – deepa

+0

Sí, este código funciona para mí. Tal vez puedas probar: Toast.makeText (TimeEntryActivity.this, "TEST", Toast.LENGTH_SHORT) .show(); – R4j

Respuesta

6

En lugar de establecer la OnClickListener a esto, trate de este enfoque:

okButton.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      Log.d("TEST", "TEST"); 
      Toast.makeText(this, "TEST", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
+2

Su camino es perfectamente válido. – kabuko

+1

Nunca dije realmente que no lo fuera. – Chris

+0

Si está de acuerdo en que su camino es válido, ¿cómo ayuda su respuesta a su problema? – kabuko

4

usted debe tratar de limpiar su proyecto o tratar de reinicio su Eclipse o cualquier otro editor que esté utilizando, ya que es un código válido y debería funcionar bien.

ACTUALIZACIÓN:

También, usted debe comprobar su Logcat, se le conseguir la salida de Log.d("TEST", "TEST"); porque su pan tostado parece ser implementado de una manera equivocada.

Toast.makeText(this, "TEST", Toast.LENGTH_SHORT).show(); // wrong 
Toast.makeText(Activity_name.this, "TEST", Toast.LENGTH_SHORT).show(); // correct 

Usando this en pan tostado en el interior del oyente significa que hacen referencia al oyente, que de hecho no debería ser el caso. Debe hacer referencia a la Actividad en sí, así que mejor use Activity_name.this.

-2

intentar hacer el botón que se pulse

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 

<Button 
    android:id="@+id/btnOK" 
    android:layout_width="80dp" 
    android:layout_height="wrap_content" 
    android:text="OK" 
    android:clickable="true" /> 

+1

Llamar a setOnClickListener ya lo hace. – lilbyrdie

7

Después de mucha angustia y el crujir de dientes, lo he descubierto. Tuve que eliminar el dispositivo emulador y agregar uno nuevo y ahora funciona como un campeón. Agradezco a todos los que intentaron ayudar.

+0

Wow. Entonces, si alguien tuviera este problema en un dispositivo físico, podría ponerse interesante. Es por eso que estoy aquí, en realidad. Tengo un caso de un controlador de clics que simplemente no se llama (uno de los muchos que funcionan). La limpieza y la instalación no han ayudado. Esperaba soluciones más robustas. Tal vez me estoy equivocando ... – lilbyrdie

0

Button iv_StyleInspiration_Back = (Button) findViewById (R.id.iv_StyleInspiration_Back); iv_StyleInspiration_Back.setOnClickListener (this);

Prueba esto Siempre que implemente onclick en su actividad es necesario establecer que el anterior para hacer que funcione para todos los controles y onclick debería ser algo como a continuación

@Override 
    public void onClick(View pView) { 
     if (null != pView) { 
      switch (pView.getId()) { 
       case R.id.iv_StyleInspiration_Back: 
        //do what you want 
            break; 
       default: 
        break; 
      } 
     } 
    } 
-1

Compruebe si hay tres pasos:

  1. busque el botón por id correctamente
  2. enlace el botón a un oyente. (agregando el actionListener)
  3. especifica una condición para este botón en caso de implementar una clase actionListener.