So, I'm getting this error
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'
This is my layout 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>
And this is my code
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();
}
}
}
The method assigned to the button "ingresarButton", "ingresarBtnClick(View view)" is there, as the Androir documentation suggest http://developer.android.com/guide/topics/ui/ui-events.html but sill I'm getting the error.
Does it has anything to do that i'm showing this layout on a Dialog?
SisLec is my Activity class
To define the click event handler for a button, add the android:onClick attribute to the <Button> element in your XML layout. The value for this attribute must be the name of the method you want to call in response to a click event. The Activity hosting the layout must then implement the corresponding method.
Link the button from the XML by calling findViewById() method and set the onClick listener by using setOnClickListener() method. setOnClickListener takes an OnClickListener object as the parameter. Basically it's creating an anonymous subclass OnClickListener in the parameter.
In Android, the OnClickListener() interface has an onClick(View v) method that is called when the view (component) is clicked. The code for a component's functionality is written inside this method, and the listener is set using the setOnClickListener() method.
android:onClick in the xml routes the event to the method in the activity. But your method is not in the activity, its in your Dialog class. You'll need to either have your activity forward the call to the instance of the Dialog, or have the dialog code register itself as the onClick listener instead of trying to set it in the layout.
The onClick method needs to be in the Activity class.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With