El campo lo he definido de la siguente manera en el layaout.xml
Código
<EditText android:id="@+id/campoAnno" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignLeft="@+id/campoPais" android:layout_alignTop="@+id/etiquetaAnno" android:ems="10" android:inputType="number" />
En el evento onCreate de la activity estoy intentando añadirle al campo un evento que haga la validación del rango. He probado añadiendo al campo un evento onFocusChangeListener. He probado a añadirle un TextWatcher. Y he probado a añadirle un InputFilter.
En los tres casos obtengo un error java.lang.NullPointerException en el momento de ejecutarse el método onCreate de la activity y no soy capaz de ver que es lo que hago mal.
Este el el método onCreate con el código que he puesto para añadir el onFocusChangeListener (Funciona perfectamente si le quito el código de añadir el onFocusChangeListener):
Código
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_edit_travel); EditText campoAnno = (EditText) findViewById( R.id.campoAnno ); if (savedInstanceState == null) { getSupportFragmentManager().beginTransaction() .add(R.id.container, new PlaceholderFragment()).commit(); } else { EditText campoCiudad = (EditText) findViewById( R.id.campoCiudad ); EditText campoComentarios = (EditText) findViewById( R.id.campoComentarios); EditText campoPais = (EditText) findViewById( R.id.campoPais ); // Cargar el contenido de los campos campoCiudad.setText( savedInstanceState.getCharSequence("ciudad" ) ); campoPais.setText( savedInstanceState.getCharSequence( "pais" ) ); campoAnno.setText( savedInstanceState.getCharSequence( "anno" ) ); campoComentarios.setText( savedInstanceState.getCharSequence( "comentarios" ) ); } campoAnno.setOnFocusChangeListener( new OnFocusChangeListener() { @Override if ( !hasFocus ) { if ( valor < 1950 || valor > 2014 ) { Toast.makeText( getApplicationContext() , getString( R.string.anno_fuera_rango ) , Toast.LENGTH_SHORT ).show(); } } } }); }
Y esto es lo que me sale en la consola de log al ejecutarse:
Código:
04-13 15:18:26.958: E/AndroidRuntime(1179): FATAL EXCEPTION: main
04-13 15:18:26.958: E/AndroidRuntime(1179): Process: com.example.uax_ef_03_01_edit_travel_activity, PID: 1179
04-13 15:18:26.958: E/AndroidRuntime(1179): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.uax_ef_03_01_edit_travel_activity/com.example.uax_ef_03_01_edit_travel_activity.EditTravelActivity}: java.lang.NullPointerException
04-13 15:18:26.958: E/AndroidRuntime(1179): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
04-13 15:18:26.958: E/AndroidRuntime(1179): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
04-13 15:18:26.958: E/AndroidRuntime(1179): at android.app.ActivityThread.access$800(ActivityThread.java:135)
04-13 15:18:26.958: E/AndroidRuntime(1179): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
04-13 15:18:26.958: E/AndroidRuntime(1179): at android.os.Handler.dispatchMessage(Handler.java:102)
04-13 15:18:26.958: E/AndroidRuntime(1179): at android.os.Looper.loop(Looper.java:136)
04-13 15:18:26.958: E/AndroidRuntime(1179): at android.app.ActivityThread.main(ActivityThread.java:5017)
04-13 15:18:26.958: E/AndroidRuntime(1179): at java.lang.reflect.Method.invokeNative(Native Method)
04-13 15:18:26.958: E/AndroidRuntime(1179): at java.lang.reflect.Method.invoke(Method.java:515)
04-13 15:18:26.958: E/AndroidRuntime(1179): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
04-13 15:18:26.958: E/AndroidRuntime(1179): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
04-13 15:18:26.958: E/AndroidRuntime(1179): at dalvik.system.NativeStart.main(Native Method)
04-13 15:18:26.958: E/AndroidRuntime(1179): Caused by: java.lang.NullPointerException
04-13 15:18:26.958: E/AndroidRuntime(1179): at com.example.uax_ef_03_01_edit_travel_activity.EditTravelActivity.onCreate(EditTravelActivity.java:41)
04-13 15:18:26.958: E/AndroidRuntime(1179): at android.app.Activity.performCreate(Activity.java:5231)
04-13 15:18:26.958: E/AndroidRuntime(1179): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
04-13 15:18:26.958: E/AndroidRuntime(1179): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
04-13 15:18:26.958: E/AndroidRuntime(1179): ... 11 more
¿Alguien puede decirme que hago mal?
Por cierto: estoy compilando con el API19 y compatibilidad desde el API8
Muchas gracias.