Hola, os cuento un poco por encima que es lo que me sucede ya que llevo todo este finde intentando arreglar este problema y nada... No sé exactamente que puedo estar haciendo mal.
Tengo una actividad principal que la he llamado AlfaActivity, esta actividad simplemente tiene 2 botones: "login" y "register". Para el click del login hago lo siguiente:
btnLogin.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), Login.class);
startActivity(intent);
}
});
En login tengo lo siguiente:
package com.droid;
import java.util.ArrayList;
import org.json.JSONArray;
import org.json.JSONObject;
import com.access.ControlLogin;
import com.access.OnLoginListener;
import com.access.Post;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
public class Login extends Activity {
private ControlLogin ctlLogin;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.control_login);
ctlLogin = (ControlLogin) findViewById(R.id.CtlLogin);
try {
ctlLogin.setOnLoginListener(new OnLoginListener() {
@Override
public void test() {
Toast.makeText(getBaseContext(), "Test. ",
Toast.LENGTH_SHORT).show();
}
});
} catch (Exception ex) {
Log.e("Ex_Login", "Error: " + ex.getMessage());
Toast.makeText(getApplicationContext(),
ex.getClass().getName() + " " + ex.getMessage(),
Toast.LENGTH_LONG).show();
}
}
}
Si quito el try y catch, me sale en el LogCat un monton de excepciones originados por un java.lang.NullPointerException o si quito el OnLoginListener (es el causante del problema). El código del contrologin es el siguiente:
package com.access;
import com.droid.R;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.access.OnLoginListener;
public class ControlLogin extends LinearLayout {
private EditText txtUsuario;
private EditText txtPassword;
private Button btnLogin;
private TextView lblMensaje;
public OnLoginListener listener;
public ControlLogin(Context context) {
super(context);
inicializar();
}
public ControlLogin(Context context, AttributeSet attrs) {
super(context, attrs);
inicializar();
}
private void inicializar() {
// Utilizamos el layout 'control_login' como interfaz del control
String infService = Context.LAYOUT_INFLATER_SERVICE;
LayoutInflater li = (LayoutInflater) getContext().getSystemService(
infService);
li.inflate(R.layout.control_login, this, true);
// Obtenemoslas referencias a los distintos control
txtUsuario = (EditText) findViewById(R.id.TxtUsuario);
txtPassword = (EditText) findViewById(R.id.TxtPassword);
btnLogin = (Button) findViewById(R.id.BtnAceptar);
lblMensaje = (TextView) findViewById(R.id.LblMensaje);
// Asociamos los eventos necesarios
asignarEventos();
}
public void setOnLoginListener(OnLoginListener l) {
listener = l;
}
private void asignarEventos() {
btnLogin.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
listener.test();
}
});
}
public void setMensaje(String msg) {
lblMensaje.setText(msg);
}
}
Y la interfaz (OnLoginListener.java):
package com.access;
public interface OnLoginListener
{
void test();
}
Es super raro que no me detecte alguno de los elementos. En el AndroidManifiest creo tener todo lo que hace falta:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.droid"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".AlfaActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Login">
<intent-filter>
<action android:name="Login" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
¿Alguno podría tener alguna idea de que me podría estar sucediendo? Resultante bastante frustante el estar constantemente probando cosas y nada... que siga produciéndose el mismo error de ejecución.
Un saludo y gracias.