Llevo mucho tiempo dandole vueltas para crear un popUp a partir de un custom component con un textInput. He conseguido crear popUp a partir de custom components de ChecksBox y rank sim problema alguno pero al crearlo de un textInput y ejecutarlo, al pulsar sobre el textInput para introducir texto me salta el dichoso error
TypeError: Error #1009: Cannot access a property or method of a null object reference.
He probado hacerlo en modo vista pero no me sirve y ya estoy desesperándome. He leido que en ocasiones se crea la referencia antes que el objeto y causa errores, no se si van por ahi los tiros. Encima del error no puedo sacar nada en claro...
La llamada desde la vista ppal
Código ActionScript :
public function getTexto():void {
//crear el popup
var textoVar: TextPicker = new TextPicker();
textoVar.addEventListener(TextPickerEvent.TEXT_PICKER_SET, onTextoSet);
textoVar.addEventListener(TextPickerEvent.TEXT_PICKER_CANCEL, onTextoCancel);
PopUpManager.addPopUp(textoVar, this, true);
}
private function onTextoSet(event:TextPickerEvent): void {
datoUsuario1 = event.textValue as String;
nodoEditado = nodoEncontrado.nodeName;
onTextoCancel(event);
}
private function onTextoCancel(event:TextPickerEvent): void {
var textoItemVar:TextPicker = event.target as TextPicker;
textoItemVar.removeEventListener(TextPickerEvent.TEXT_PICKER_SET, onTextoSet);
textoItemVar.removeEventListener(TextPickerEvent.TEXT_PICKER_CANCEL,onTextoCancel);
}
//TextPickerEvent.as
package components {
import flash.events.Event;
public class TextPickerEvent extends Event {
public static const TEXT_PICKER_SET: String = 'textPickerSet';
public static const TEXT_PICKER_CANCEL: String = 'textPickerCancel';
public var textValue: String;
public function TextPickerEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false) {
super(type, bubbles, cancelable);
}
}
}
TextPicker.mxml
Código :
<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark" width="444" height="236">
<fx:Script>
<![CDATA[
import mx.managers.PopUpManager;
[Bindable]
public var textValue:TextInput;
private function setText():void
{
var dateObjects:SharedObject;
var dpe1:TextPickerEvent = new TextPickerEvent(TextPickerEvent.TEXT_PICKER_SET);
dpe1.textValue = userText.text;
dispatchEvent(dpe1);
PopUpManager.removePopUp(this);
trace("** Valor introducido: " + userText.text);
// Guardo en el directorio la fecha y hora introducida
try{
dateObjects = SharedObject.getLocal("datosGuardados");
}
catch(error:Error){
trace("SharedObject Error: No existe el directorio y no se puede crear uno nuevo.");
return;
}
dateObjects.data.text=userText.text;
dateObjects.flush();
}
private function cancelText():void
{
PopUpManager.removePopUp(this);
}
]]>
</fx:Script>
<s:TextInput id="userText" x="1" y="71" width="100%"/>
<s:Button x="10" y="167" width="200" height="60" label="Aplicar" click="setText()" fontSize="20"/>
<s:Button x="237" y="170" width="200" height="60" label="Cancelar" click="cancelText()" fontSize="20"/>
</s:Group>
Me estoy volviendo loco
saludos
Alvaro
