Actionscript 3 Flex Mobile持久化视图数据

Actionscript 3 Flex Mobile持久化视图数据,actionscript-3,air,flash-builder,flex4.5,flex-mobile,Actionscript 3,Air,Flash Builder,Flex4.5,Flex Mobile,我构建了一个简单的hello world应用程序来检查Flash Builder 4.5的移动功能 下面是它的工作原理: 默认视图要求在文本输入中输入名称,并具有“继续”按钮 单击“继续”按钮时,它会在viewNavigator中推送一个新视图,该视图在标签中仅显示“Hello”+名称 当您单击此视图中的任何位置时,它会从viewNavigator弹出一个视图(即自身),以返回默认视图 我认为只有一个问题: 当我回到默认视图时,它处于初始状态,即textInput为空。似乎viewNavigat

我构建了一个简单的hello world应用程序来检查Flash Builder 4.5的移动功能

下面是它的工作原理:

默认视图要求在文本输入中输入名称,并具有“继续”按钮

单击“继续”按钮时,它会在viewNavigator中推送一个新视图,该视图在标签中仅显示“Hello”+名称

当您单击此视图中的任何位置时,它会从viewNavigator弹出一个视图(即自身),以返回默认视图

我认为只有一个问题: 当我回到默认视图时,它处于初始状态,即textInput为空。似乎viewNavigator为默认视图的类创建了一个新视图并按下了该按钮,而不仅仅是删除俯视图并显示上一个视图

我认为这对于在网格中显示数据的程序来说尤其有问题,您可以单击数据查看详细信息……当您返回时,网格将是空的

有什么办法可以解决这个问题吗

编辑:
项目名称:HelloWorld
代码如下:

HelloWorldDefaultView.mxml

protected function button1_clickHandler(event:MouseEvent):void {
    navigator.pushView(HiView, tName.text);
}
HiView.mxml

protected function view1_clickHandler(event:MouseEvent):void {
    navigator.popView();
}

protected function view1_creationCompleteHandler(event:FlexEvent):void {
    lblHello.text="Hello " + data;
}
截图


初始屏幕


屏幕2



点击屏幕2让我们回到初始屏幕。注意空白文本输入

,这是移动应用程序应该使用的方式。

查看本文:

正如他们所写:

每次从显示列表中删除视图(通过popView()或pushView())时,其实例将被销毁,但其数据模型存储在内存中

为了保存视图的会话状态,必须修改数据属性。销毁视图类的当前实例时将请求此属性。当导航回该视图时,数据属性值将被分配回同一视图类的新创建实例

你有没有试着设定然后呢


在更改为另一个视图之前,将数据存储在当前视图的数据中?

这很奇怪。所以每次我想回到以前的视图,我都要重建它?有解决方法吗?有一个destructionPolicy属性可以设置为false。退房默认情况下,这将设置为ContainerDestructionPolicy.AUTO,这意味着视图在删除后应立即销毁。如果设置为ContainerDestructionPolicy.NEVER,视图将保留在内存中。如果开发人员知道视图实例化需要很长时间,或者开发人员不想丢失视图中的内容,则可以使用此属性。“是的,@Alexander的回答很好地表达了这一点。感谢您的帮助:)从内存的角度看会更好吗要将数据存储在静态变量中并每次创建视图,或者设置
destructionPolicy=“never”
?我也做了这两件事。使用静态变量可能会节省一些字节,但另一种解决方案看起来更“面向对象”
protected function button1_clickHandler(event:MouseEvent):void {
    data = tName.text;
    navigator.pushView(HiView, tName.text);
}