我現在有上具有以下類劇本的移動應用程序:AS3/Flex的 - persistNavigatorState +與ArrayCollection的對象()
[Bindable]
public class Foo
{
public var myString:String;
public var myList:ArrayCollection;
public function Foo() {}
}
我也有persistNavigatorState="true"
我ViewNavigatorApplication
。
假設在我有我的電話creationComplete="init()"
下面我第一種觀點:
private function init():void {
var s:String = "test_string";
var a:ArrayCollection = new ArrayCollection();
a.addItem("test1");
a.addItem("test2");
a.addItem("test3");
data.foo = new Foo();
data.foo.myString = s;
data.foo.myList = a;
trace(data.foo.myString);
trace(data.foo.myList[0]);
trace(data.foo.myList[1]);
trace(data.foo.myList[2]);
}
執行時,一切工作正常在我的應用程序。但是,由於我希望會話在用戶不小心關閉應用程序的情況下持續進行,因此當他重新打開該應用程序時,數據應該仍然存在。
而是,當我關閉並重新打開我的應用程序時,只有myString
屬性持久存在(即按預期跟蹤「test_string」),但是不會複製ArrayCollection。
我試着ObjectUtil.clone()
和ObjectUtil.copy()
如下:
data.foo.myString = ObjectUtil.copy(s) as String;
data.foo.myList = ObjectUtil.copy(a) as ArrayCollection;
,我也試過:
var f:Foo = new Foo();
f.myString = s;
f.myList = a;
data.foo = ObjectUtil.copy(f) as Foo;
trace(data.foo.myString);
trace(data.foo.myList[0]);
但這只是拋出了我
TypeError: Error #1009: Cannot access a property or method of a null object reference.
任何關於如何在移動應用程序中保存ArrayCollections和Foo類的想法?
我嘗試了上述所有的東西,並且仍然以非常不可思議的方式工作。非常感謝,但我認爲我原來的問題不是我面臨的問題。現在,更多的是獲取自定義對象以保存數據(即,data.my_custom_object = some_custom_object),以在移動設備關閉並打開時保存並保留。 – 2012-04-04 22:08:19