У меня проблема с использованием компонента SplitViewNavigator в flex 4.6 с использованием Adobe Flash Builder.
[ОБНОВЛЕНО] * * *
Я создаю приложение Reddit для планшета Blackberry Playbook, и я использую API Reddit.У меня есть три представления mxml: RedditReaderHomeView.mxml, redditFeed.mxml и subredditList.mxml.В RedditReaderHomeView.mxml у меня есть splitViewNavigator.В левой части моего SplitViewNavigator находится subredditList.mxml, а справа - redditFeed.mxml.При инициализации redditFeed.mxml извлекает данные XML, чтобы заполнить свой список записями reddit, а subredditList.mxml извлекает данные XML, которые заполняют его список отображаемыми субредитами (категориями).Когда пользователь нажимает на записи subreddit слева, redditFeed.mxml справа должен обновиться, чтобы данные, которые он извлекал, были записями из категории subreddit, которая была выбрана слева.Другими словами, классический мастер / детализация навигации.Категория слева, которая открывает записи этой категории справа.
Ну, у меня есть функция, которая передает URL выбранного subreddit в redditFeed.mxml.
subredditList.mxml - здесь выбирается subreddit, и его URL-адрес отправляется функции в redditFeed.mxml
public function list_clickHandler(event:IndexChangeEvent):void {
var RSSItem:Object = redditList.dataProvider.getItemAt(event.newIndex);
var thisItem:Item = RSSItem as Item;
rlink = thisItem.link;
var moddedLink:String = rlink.slice(1, int.MAX_VALUE)
var pushSub:redditFeed = new redditFeed();
pushSub.myList_creationCompleteHandler(moddedLink);
}
redditFeed.mxml - URL-адрес используется для получения данных из этого конкретного subreddit ...
public function myList_creationCompleteHandler(url:String):void
{
getRedditFeedResult.token = redditFeedGrabber.getRedditFeed(url);
}
... хотя кажется, что эти данные никогда не отображаются в компоненте списка искры, даже если я вижу вызовделается через сетевой монитор.Я часами пытался решить эту проблему.И я полагаю, что это как-то связано с тем, что представления являются «активными» и «деактивированными», поскольку, когда я пытался выполнить этот же вызов из redditFeed.mxml, вызов прошел и данные в списке обновились.Я подумал, возможно, это потому, что действие выполнялось в том же представлении, которое содержит список, в котором отображаются данные.Так что в этом случае он будет «активным», поскольку в этом представлении выполняется действие.
Я ценю любую помощь, которую может предложить любой.Кроме того, не стесняйтесь просить разъяснения / более подробную информацию от меня.Я действительно хочу решить это.Спасибо!
RedditReaderHomeView.mxml - вот код, который вы запросили.Дай мне знать, если тебе нужно больше / что-то еще.
<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
actionBarVisible="false" tabBarVisible="true" title="Reddit Reader by Domisy" creationPolicy="all"
actionBarVisible.landscape="true">
<fx:Script>
<![CDATA[
import com.adobe.fiber.core.model_public;
import mx.events.FlexEvent;
import views.redditFeed;
public var defUrl:String = new String("");
public function refreshRSS(event:Event):void
{
//***UPDATED CODE****
var refreshFunction:Object = redditFeedNav.getElementAt(0);
refreshFunction.refreshList();
//var refreshFunction:redditFeed = new redditFeed();
//refreshFunction.refreshList();
}
]]>
</fx:Script>
<fx:Declarations>
</fx:Declarations>
<s:states>
<s:State name="portrait"/>
<s:State name="landscape"/>
</s:states>
<s:actionContent>
<s:Button includeIn="landscape" click="navigator.pushView(profileView)"
icon="@Embed('assets/images/profileIcon.png')"/>
</s:actionContent>
<s:SplitViewNavigator width="100%" height="100%" id="splitViewNavigator" autoHideFirstViewNavigator="true">
<s:ViewNavigator id="redditListNav" firstView="views.subredditList" width="300" height="100%"/>
<s:ViewNavigator id="redditFeedNav" firstView="views.redditFeed" width="100%" height="100%">
<s:actionContent.landscape>
<s:Button id="refreshButtonlLandscape" icon="@Embed('assets/refresh160.png')" click="refreshRSS(event)" />
</s:actionContent.landscape>
<s:actionContent.portrait>
<s:Button id="refreshButton" icon="@Embed('assets/refresh160.png')" click="refreshRSS(event)" />
<s:Button id="navigatorButton" label="Search" click="splitViewNavigator.showFirstViewNavigatorInPopUp(navigatorButton)" />
</s:actionContent.portrait>
</s:ViewNavigator>
</s:SplitViewNavigator>
</s:View>