J'ai deux fragments et une activité. ChatFragment et UserListFragment. ChatActivity est une activité de démarrage où j'ai écrit code foolowingNOt capable de basculer entre les onglets mono pour android
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.QChatLayout);
var newFragment = new UserFragment(this, this);
var ft = FragmentManager.BeginTransaction();
ft.Add(Resource.Id.Frame_container, newFragment);
ActionBar.NavigationMode = ActionBarNavigationMode.Tabs;
var homeTab = ActionBar.NewTab();
homeTab.SetTabListener(
new TabListener<UserFragment>(newFragment));
homeTab.SetText("Users");
// Add the new tab to the action bar
ActionBar.AddTab(homeTab);
ft.Commit();
}
Il affiche la liste des utilisateurs disponibles à l'aide UserFragment Quand je clique sur l'un des utilisateurs de la fenêtre de chatt s'ouvre dans un nouvel onglet qui n'est ChatFragment Pour ouvrir nouvelle fenêtre J'ajoute onglet ActionBar
User user = GetUserByName(userName);
ChatFragment chatFragment = null;
Fragment fragment = FragmentManager.FindFragmentByTag(user.Name);
var ft = FragmentManager.BeginTransaction();
if (fragment == null)
{
chatFragment = new ChatFragment(context, activity);
chatFragment.User = user;
chatFragment.CurrentUser = Global.Host.Username;
Global.ChatWindows.Add(chatFragment);
ft.SetBreadCrumbTitle(user.Name);
ft.Add(Resource.Id.Frame_container, chatFragment, user.Name);
var homeTab = this.activity.ActionBar.NewTab();
homeTab.SetTabListener(
new TabListener<ChatFragment>(fragment));
homeTab.SetIcon(Resource.Drawable.QChatOffline);
homeTab.SetText(userName);
// Add the new tab to the action bar
this.activity.ActionBar.AddTab(homeTab); }
else
{
chatFragment = (ChatFragment)fragment;
}
ft.Commit();
chatFragment.ShowMessage(String.Format("{0} is {1}.", user.Name, m_chatWindowManager.GetStatusText(user.Status)), MessageType.Status);
j'ai utilisé classe tablistner:
public class TabListener<T> : Java.Lang.Object, ActionBar.ITabListener
where T : Fragment, new()
{
private T _fragment;
/// <summary>
/// initializes a new instance of the tab listener
/// </summary>
public TabListener()
{
_fragment = new T();
}
/// <summary>
/// Initializes a new instance of the tab listener
/// </summary>
/// <param name="fragment"></param>
public TabListener(T fragment)
{
_fragment = fragment;
}
/// <summary>
/// Handles the reselection of the tab
/// </summary>
/// <param name="tab"></param>
/// <param name="ft"></param>
public void OnTabReselected(ActionBar.Tab tab, FragmentTransaction ft)
{
}
/// <summary>
/// Adds the fragment when the tab was selected
/// </summary>
/// <param name="tab"></param>
/// <param name="ft"></param>
public void OnTabSelected(ActionBar.Tab tab, FragmentTransaction ft)
{
//ft.Add(Resource.Id.Frame_container, _fragment, typeof(T).FullName);
//int index = Global.ChatWindows.FindIndex(c => c.User.Name == tab.Tag.ToString());
//Activity.ActionBar.SelectTab(Activity.ActionBar.GetTabAt(index + 1));
//ft.Show(_fragment);
//tab.Select();
//tab.Notify();
}
/// <summary>
/// Removes the fragment when the tab was deselected
/// </summary>
/// <param name="tab"></param>
/// <param name="ft"></param>
public void OnTabUnselected(ActionBar.Tab tab, FragmentTransaction ft)
{
//ft.Remove(_fragment);
//ft.AddToBackStack(tab.Tag.ToString());
}
}
quel code je devrais écrire dans OnTabSelected et Deselected. Je ne peux pas basculer entre les onglets dans la barre d'action. Quelqu'un peut-il s'il vous plaît aider à régler ce problème.
Je l'ai fait après auto-creuser ... –
En outre, consultez ce tutoriel officiel: http://docs.xamarin.com/Android/Guides/Platform_Features/Introduction_to_Ice_Cream_Sandwich#Action_Bar_Tabs – Ivozor