J'ai un simple ActionBar avec 3 onglets attachés. Quand un onglet est cliqué, le fragment est gonflé et la vue montre. L'onglet en cours de clic est déclenché à l'aide d'un événement. Initialement, le premier fragment est gonflé, mais les autres répondent et gonflent si vous cliquez dessus.L'ICommand ne se déclenche pas toujours lorsque l'onglet est sélectionné
Si je change l'événement en cours en ICommand
, seul le dernier fragment est gonflé et si je clique sur le premier onglet, celui-ci et le dernier sont gonflés. Jamais la seconde.
Mon code est ce
ICommand TabClicked
{
get
{
return new RelayCommand(() =>
{
tab.TabSelected += (object sender, ActionBar.TabEventArgs e) => TabOnTabSelected(sender, e);
});
}
}
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
ActionBar.NavigationMode = ActionBarNavigationMode.Tabs;
fragments.Add(new TODFragment());
fragments.Add(new ConditionsFragment());
fragments.Add(new ResultsFragment());
AddTabToActionBar("Time", Resource.Drawable.crucifix_colour);
AddTabToActionBar("Conditions", Resource.Drawable.weather_colour);
AddTabToActionBar("Results", Resource.Drawable.tod_colour);
}
void AddTabToActionBar(string text, int iconResourceId)
{
tab = ActionBar.NewTab().SetTag(text).SetText(text).SetIcon(iconResourceId);
/* uncomment and comment out one of the two below to see the difference in operation */
tab.TabSelected += TabOnTabSelected;
//tab.SetCommand<ActionBar.TabEventArgs>("TabSelected", TabClicked);
ActionBar.AddTab(tab);
}
void TabOnTabSelected(object sender, ActionBar.TabEventArgs tabEventArgs)
{
var tabNo = sender as ActionBar.Tab;
var frag = fragments[tabNo.Position];
tabEventArgs.FragmentTransaction.Replace(Resource.Id.frameLayout1, frag);
}
Suis-je manque quelque chose ici fondamental dans la différence entre ICommands et événements ou est-ce autre chose?
J'utilise Xam.Android et MVVMLight