두 개의 단편과 하나의 활동이 있습니다. ChatFragment 및 UserListFragment입니다. ChatActivity 내가 foolowing 코드를 작성했습니다 시작 활동안드로이드 용 탭 모노 사이를 전환 할 수 없습니다.
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();
}
그것은 내가 열려면 ChatFragment 아무것도가없는 chatt 창 새 탭에서 열립니다됩니다 사용자의 하나를 클릭하면 UserFragment 를 사용하여 가능한 사용자의 목록을 표시합니다 새 창 나는 액션 바
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);
에 탭을 추가하고 내가 사용하고 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());
}
}
OnTabSelected 및 Deselected에 작성해야하는 코드는 무엇입니까? 작업 표시 줄에서 탭 사이를 전환 할 수 없습니다. 누구든지이 문제를 해결할 수 있도록 도와주십시오.
나는 스스로 파고 들었습니다. ......... –
또한이 공식 자습서를 확인하십시오 : http://docs.xamarin.com/Android/Guides/Platform_Features/Introduction_to_Ice_Cream_Sandwich#Action_Bar_Tabs – Ivozor