我有一个带有4个标签的TabHost。其中之一,“配置文件”选项卡包含注册过程:当用户未注册时,在“配置文件”选项卡中应显示一些“创建帐户”片段,当用户已注册时,则应显示“配置文件帐户”。
我创建了这样的标签:
protected override void AddTabs(Bundle args){
AddTab<TrackHomeView>(
args,
Mvx.IoCProvider.IoCConstruct<TrackHomeViewModel>(),
CreateTabFor("0", Resource.Drawable.ic_track_icon, Strings.Track));
AddTab<SendView>(
args,
Mvx.IoCProvider.IoCConstruct<SendViewModel>(),
CreateTabFor("1", Resource.Drawable.ic_send_icon, Strings.Send));
var isUserLoggedIn = MainViewModel.IsUserLoggedIn();
if (isUserLoggedIn)
{
AddTab<ProfileView>(
args,
Mvx.IoCProvider.IoCConstruct<ProfileViewModel>(),
CreateTabFor("2", Resource.Drawable.ic_profile_icon, Strings.Profile));
}
else
{
AddTab<CreateAccountView>(
args,
Mvx.IoCProvider.IoCConstruct<CreateAccountViewModel>(),
CreateTabFor("2", Resource.Drawable.ic_profile_icon, Strings.Profile));
}
AddTab<MoreView>(
args,
Mvx.IoCProvider.IoCConstruct<MoreViewModel>(),
CreateTabFor("3", Resource.Drawable.ic_more_icon, Strings.More));
}
每个选项卡都这样创建:
private TabHost.TabSpec CreateTabFor(string tabSpec, int imageId, string title)
{
var tabView = this.BindingInflate(Resource.Layout.custom_tab, null);
tabView.FindViewById<ImageView>(Resource.Id.tabImage).SetImageResource(imageId);
tabView.FindViewById<TextView>(Resource.Id.tabTitle).Text = title;
TabHost = FindViewById<TabHost>(global::Android.Resource.Id.TabHost);
TabHost.TabWidget.SetDividerDrawable(null);
TabHost.Setup();
var spec = TabHost.NewTabSpec(tabSpec);
spec.SetIndicator(tabView);
return spec;
}
我想创建一种机制,当用户完成注册过程时,将重新创建所有选项卡。 我尝试了一些东西:
TabHost.ClearAllTabs();
AddTabs(Intent.Extras);
但是出现错误,选项卡已经创建。
我想在登录/注册过程发生后将另一个ViewModel附加到一个选项卡上。有人知道这样做的任何机制吗?