2011-11-15 99 views
6

所以,我得到這個錯誤找不到的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' 

這是我的佈局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> 

這是我的代碼

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(); 
     } 
    } 
} 

的方法分配給按鈕「ingresarButton」,「ingresarBtnClick(View view)」在那裏,因爲Androir文檔建議http://developer.android.com/guide/topics/ui/ui-events.html,但是窗臺I會得到錯誤。

它有什麼要做,我在對話框上顯示此佈局?

SisLec是我Activity類

回答

10

android:onClick在xml中將事件路由到活動中的方法。但是你的方法不在活動中,它在你的Dialog類中。您需要讓您的活動將呼叫轉發到對話框的實例,或者讓對話框代碼將自己註冊爲onClick監聽器,而不是嘗試將其設置在佈局中。

+0

被設置OnClickLsitener,我想有我活動類的清潔可能的是,在窗體/對話框的類上有每個表單/對話框按鈕的onlick方法,並且不想使用OnClickListener,這很容易設置Click方法 感謝您的答案,找不到任何聲明這 – CJLopez

+0

實際上,它將函數調用路由到附加到創建它的layoutinflater的basecontext,無論哪種方式很難說出它在4個不同的la中寫入時的問題nguages。 –

3

的onclick方法需要在Activity類。

+1

謝謝,我不想與每個按鈕的方法進行卷積Activity類,看起來我上的每個按鈕 – CJLopez

相關問題