Flex - Попытка загрузить текстовый файл из списка в TextArea - PullRequest
1 голос
/ 27 июня 2011

У меня есть TextArea и DataGrid. Я заполнил DataGrid списком текстовых файлов в каталоге. Сейчас я пытаюсь загрузить выбранный файл в TextArea. Я получаю исключение нулевого указателя при выборе файла из списка, который говорит мне, что я не обращаюсь к нему правильно ... Я думаю.

    <s:TextArea id="mainTextField" x="0" y="0" width="730" height="523"
                    editable="true" enabled="true"/>
        <s:DataGrid id="list" x="730" y="0" width="294" height="523" dataProvider="{files}" gridClick="listHandler(event)">
            <s:columns>
                <s:ArrayList>
                    <s:GridColumn dataField="name" headerText="Filename"/>    
                </s:ArrayList>
                </s:columns>

        </s:DataGrid>

...

    private var files:ArrayCollection;

                public var stream:FileStream = new FileStream(); // The FileStream object used for reading and writing the currentFile
                public var currentFile:File;

    private function init():void
                {

                    // Default on start: resolve desktop directory
                    var desktop:File = File.desktopDirectory;
                    // Get desktop directory listing
                    files = new ArrayCollection(desktop.getDirectoryListing());
                }

                protected function listHandler(event:GridEvent):void
                {
                    currentFile = event.target as File;
                    trace(currentFile.nativePath.toString()); **//Error occurrs here**
                    stream = new FileStream();
                    stream.openAsync(currentFile, FileMode.READ);
                    stream.addEventListener(Event.COMPLETE, fileReadHandler);
                    stream.addEventListener(IOErrorEvent.IO_ERROR, readIOErrorHandler);
                }

                public function fileReadHandler(event:Event):void 
                {
                    var str:String = stream.readUTFBytes(stream.bytesAvailable);
                    stream.close();
                    var lineEndPattern:RegExp = new RegExp(File.lineEnding, "g");
                    str = str.replace(lineEndPattern, "\n");
                    mainTextField.text = str; 
                    stream.close();
                }

1 Ответ

2 голосов
/ 27 июня 2011

Я не уверен на 100% в этом, но я не думаю, что event.target - это строка (т.е. файл) в событии GridClick. Я думал, что событие GridClick было больше для выбора ячейки. Попробуйте

currentFile = list.selectedItem as File;

Если это не сработает, попробуйте это:

curentFile = files.getItemAt(event.rowIndex) as File;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...