我在项目中使用tabhost
现在当我点击Tab 1时出现以下问题 它启动Tab 1的新活动,这是正确的,它加载我的列表视图 也很完美但是当我点击listview项目时,它应该也开始一个新的活动 但它在空白屏幕中打开,而不是在tabhost / framelayout
中这是我的代码示例,我希望你能建议我非常感谢
Listview活动/标签1
[Activity(Label = "Pagina")]
public class Paginas : Activity
{
ListView listView;
CMS.APPS CMS = new CMS.APPS();
List<CMS.Pages> ListPages;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
Core.Context = this;
SetContentView(Resource.Layout.Paginas);
ListPages = CMS.GetPagesAndroid(Core.AdministratieID, null, Core.UserID, null, null, null, null, null, null, null, null).ToList();
listView = FindViewById<ListView>(Resource.Id.ListViewPaginas);
listView.Adapter = new PagesAdapter(this, ListPages);
listView.ChoiceMode = ChoiceMode.Single;
listView.ItemClick += OnListItemClick;
}
protected void OnListItemClick(object sender, Android.Widget.AdapterView.ItemClickEventArgs e)
{
var listView = sender as ListView;
var t = ListPages[e.Position];
var CMSPage = new Intent(this, typeof(Handler));
CMSPage.PutExtra("PAG_ID", t.PAG_ID.ToString());
StartActivity(CMSPage);
//Android.Widget.Toast.MakeText(this, t.PAG_TITLE, Android.Widget.ToastLength.Short).Show();
}
}
我现在所做的是启动一个新的活动CMSPage typeof Handler 它让我一个空白的屏幕,而不是打开它代替Pagina的/ Tab 1
编辑:主屏幕上的Tabhost代码:
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Homescreen);
Core.Context = this;
CreateTab(typeof(Paginas), "Pagina's", "Pagina's", Resource.Drawable._Pagina);
CreateTab(typeof(Profiel), "Profiel", "Profiel", Resource.Drawable._Profiel);
}
private void CreateTab(Type activityType, string tag, string label, int? drawableId = null)
{
var intent = new Intent(this, activityType);
intent.AddFlags(ActivityFlags.NewTask);
var spec = TabHost.NewTabSpec(tag);
if (drawableId > 0)
{
var drawableIcon = Resources.GetDrawable(drawableId.Value);
spec.SetIndicator(label, drawableIcon);
}
else
{
spec.SetIndicator(label, null);
}
spec.SetContent(intent);
TabHost.AddTab(spec);
}
答案 0 :(得分:1)
这是我非常肯定会工作的一个粗略的例子(即没有经过测试,但我在自己的代码中做了类似的事情)。
在TabActivity中存在的Activity中
var parent = this.Parent as TabContainer;
if (parent != null)
{
parent.ChangeToTab(tabId);
}
在TabActivity中:
public void ChangeToTab(int tabId)
{
TabHost.CurrentTab = tabId;
}
当您创建TabHost时,需要为您要更改的标签加载一个标签。