Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/03/2012, 05:29
Leunamal
 
Fecha de Ingreso: abril-2009
Mensajes: 66
Antigüedad: 15 años
Puntos: 0
Pregunta Error null al colocar eventos personalizados

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:

Código:
btnLogin.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				Intent intent = new Intent(v.getContext(), Login.class);
				startActivity(intent);
			}
		});
En login tengo lo siguiente:

Código:
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:

Código:
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):

Código:
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:

Código:
<?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.