开发者

Flex Mobile persist view data

I built a simple hello world app to check out the Flash Builder 4.5 mobile capabilities.

Here's how it works:

The Default View asks for name in an textinput and has a continue button

When you click the continue button it pushes a new view in the viewNavigator which just displays "Hello " + name in a label.

When you click anywhere in this view, it pops a view (i.e. itself) from the viewNavigator, to go back to the default view

I see only 1 issue with this: When I get back to the default view, it is in its initial state, i.e. the textInput is blank. It seems as if the viewNavigator created a new 开发者_如何学Pythonview of the default view's class and pushed this, instead of just removing the top view and displaying the previous one.

I see this being especially problematic for programs which display data in a grid and you can click the data to view the detail...when you get back, the grid will be empty.

Any ideas or gotchas to solve this?

EDIT:

Project name: HelloWorld

Code below:

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;
}

Screenshots

Flex Mobile persist view data

Initial screen

Flex Mobile persist view data

Screen 2

Flex Mobile persist view data

Clicking on screen 2 gets us back to initial screen. Notice the blank textInput


Have you tried to set destructionPolicy="never" and then

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

to store the data in current View's data - before changing to another one?


That's the way it is supposed to work for mobile applications.

Check out this article: Flex 4.5 (Hero) – Persistant Data in MobileApplication

As they write:

Each time a View is removed from the display list (via popView() or pushView()) its instance is destroyed, but its data model is stored in memory.

In order to save session state for a View, you must modify the data property. This property will be requested when destroying the current instance of the View class. And the data property value will be assigned back to a newly created instance of the same View class when navigating back to that view.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜