Foros del Web » Programando para Internet » Android »

Error null al colocar eventos personalizados

Estas en el tema de Error null al colocar eventos personalizados en el foro de Android en Foros del Web. 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... ...
  #1 (permalink)  
Antiguo 18/03/2012, 05:29
 
Fecha de Ingreso: abril-2009
Mensajes: 66
Antigüedad: 15 años, 7 meses
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.

Etiquetas: eventos, java, layout, null, personalizados, sdk, todo, apps
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:33.