2011-11-15 20 views
6

lo tanto, estoy consiguiendo este errorno puede encontrar el método onClick

11-15 16:55:40.617: E/AndroidRuntime(316): java.lang.IllegalStateException: Could not find a method ingresarBtnClick(View) in the activity class android.view.ContextThemeWrapper for onClick handler on view class android.widget.Button with id 'ingresarButton' 

Este es mi diseño 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" android:weightSum="1" android:id="@+id/Login"> 
    <TextView android:layout_width="wrap_content" android:id="@+id/textView1" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Número de Lecturista" android:layout_height="wrap_content"></TextView> 
    <EditText android:inputType="number" android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@+id/numLecEditText" android:maxLength="4"> 
     <requestFocus></requestFocus>  
    </EditText> 
    <TextView android:layout_width="wrap_content" android:id="@+id/textView2" android:textAppearance="?android:attr/textAppearanceLarge" android:layout_height="wrap_content" android:text="PIN"></TextView> 
    <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="number" android:password="true" android:id="@+id/pinEditText" android:maxLength="4"></EditText> 
    <TableRow android:id="@+id/tableRow1" android:layout_width="match_parent" android:layout_height="wrap_content"> 
     <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Ingresar" android:id="@+id/ingresarButton" android:onClick="ingresarBtnClick"></Button> 
     <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Salir" android:id="@+id/salirButton" android:onClick="salirBtnClick"></Button> 
     <Button android:id="@+id/opcionesButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Opciones" android:onClick="opcionesBtnClick" ></Button> 
    </TableRow> 
</LinearLayout> 

y este es mi código

import android.app.Dialog; 
import android.view.View; 
import android.widget.EditText; 

public class FormaLogin extends Dialog 
{ 
    SisLec sisLec; 

    public FormaLogin(SisLec _sisLec) 
    {  
     super(_sisLec);  
     sisLec = _sisLec;  
     setTitle("Identificación de Lecturista"); 
    } 

    public void mostrar() 
    { 
     setContentView(R.layout.login); 
     show(); 
    } 

    public void ingresarBtnClick(View view) 
    { 
     EditText numLecTxt = (EditText) sisLec.findViewById(R.id.numLecEditText); 
     EditText pinTxt = (EditText) sisLec.findViewById(R.id.pinEditText); 

     if(numLecTxt.getText().length() > 0) 
     { 
      if(pinTxt.getText().length() > 0) 
      { 
       if(numLecTxt.getText().equals("1337")) 
       { 
        if(pinTxt.getText().equals("8383")) 
        { 
         //sisLec.frmMantenimiento.mostrar(); 
        } 
       } 
       else 
       { 
        HiloIdentificacion hiloIden = new HiloIdentificacion(); 
        hiloIden.identificacion(numLecTxt.getText().toString(), pinTxt.getText().toString()); 
       } 
      } 
      else 
       sisLec.mensaje("Debe de ingresar su pin"); 
     } 
     else 
      sisLec.mensaje("Debe de ingresar su número de Lecturista"); 
    } 

    public void salirBtnClick(View view) 
    { 
     sisLec.salir(); 
    } 

    public void opcionesBtnClick(View view) 
    { 
     // TODO: Agregar método que muestre la forma de Opciones 
    } 

    private class HiloIdentificacion extends Thread 
    { 
     private String usuario, pass; 

     public synchronized void run() 
     { 
      try 
      { 
       sisLec.identificacion(usuario, pass); 
      } 
      catch(Exception e) 
      { 
       // TODO: Agregar registro de error 
      }     
     } 

     public synchronized void identificacion(String _usuario, String _pass) 
     { 
      usuario = _usuario; 
      pass = _pass; 
      run(); 
     } 
    } 
} 

El método asignado al botón "ingresarButton", "ingresarBtnClick (Ver vista)" está allí, ya que la documentación de Androir sugiere http://developer.android.com/guide/topics/ui/ui-events.html pero al final estoy obteniendo el error.

¿Tiene algo que ver con mostrar este diseño en un cuadro de diálogo?

SisLec es mi clase de actividad

Respuesta

10

android: onHaga clic en el xml enruta el evento al método en la actividad. Pero su método no está en la actividad, está en su clase de Diálogo. Tendrá que hacer que su actividad reenvíe la llamada a la instancia del cuadro de diálogo, o hacer que el código de diálogo se registre como oyente onClick en lugar de intentar establecerlo en el diseño.

+0

y quería tener mi clase de actividad de los más limpios posible, teniendo cada formulario/botón de diálogo onlick método en la clase del formulario/diálogo y no quería utilizar el OnClickListener visto lo fácil que era establecer el método Click gracias por la respuesta, no pudo encontrar a nadie que indicara esto – CJLopez

+0

En realidad, enruta la llamada de función al contexto base adjunto al layoutinflater que lo crea, de cualquier forma es difícil decir cuál es el problema cuando está escrito en 4 diferentes la idiomas. –

3

El método onClick tiene que estar en la clase de actividad.

+1

Gracias, yo no quiero enrollar la clase de actividad con cada método de botón, parece que va a configurar la OnClickLsitener en cada botón – CJLopez

Cuestiones relacionadas